溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Qiling是一款什么框架

發(fā)布時(shí)間:2021-12-27 14:18:31 來源:億速云 閱讀:163 作者:小新 欄目:數(shù)據(jù)安全

這篇文章主要為大家展示了“Qiling是一款什么框架”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Qiling是一款什么框架”這篇文章吧。

Qiling是一款功能強(qiáng)大的高級(jí)代碼模擬框架,該工具由Unicorn引擎驅(qū)動(dòng),并且擁有下列功能:

1、跨平臺(tái)支持:Windows、macOS、Linux、BSD;

2、跨架構(gòu)支持:x86、x86_64、ARM、ARM64等等;

3、多文件結(jié)構(gòu)支持:PE、MachO、ELF;

4、在隔離環(huán)境中模擬&沙盒系統(tǒng)代碼;

5、提供高級(jí)API來安裝和配置沙盒環(huán)境;

6、細(xì)粒度顯示:允許設(shè)置多種級(jí)別的鉤子(instruction/basic-block/memory-access/exception/syscall/IO等等);

7、允許動(dòng)態(tài)修補(bǔ)運(yùn)行中的程序代碼,包括已加載的庫(kù);

8、Python框架支持,允許構(gòu)建和定制安全分析工具;

Qiling與其他模擬器對(duì)比

目前,社區(qū)有很多開源的模擬器,最接近Qiling的就是Unicorn和Qemu了。

Qiling vs Unicorn引擎

雖然Qiling 時(shí)基于Unicorn實(shí)現(xiàn)的,但是它們兩個(gè)完全不同:

1、Unicorn只是一個(gè)CPU模擬器,它主要針對(duì)的是模擬CPU指令。Unicorn無法識(shí)別高級(jí)概念,例如動(dòng)態(tài)庫(kù)、系統(tǒng)調(diào)用、I/O處理或類似PE、MachO或ELF這樣的可執(zhí)行文件格式。因此,Unicorn只能夠模擬原始設(shè)備指令,無法適用于操作系統(tǒng)上下文場(chǎng)景。

2、Qiling是一個(gè)高級(jí)框架,它可以利用Unicorn來模擬CPU指令,但是它同樣可以理解操作系統(tǒng)上下文,它集成了可執(zhí)行文件格式加載器、動(dòng)態(tài)鏈接、系統(tǒng)調(diào)用和I/O處理器。更重要的是,Qiling可以在不需要原生操作系統(tǒng)的環(huán)境下運(yùn)行可執(zhí)行文件源碼。

Qiling vs Qemu用戶模式

Qemu用戶模式跟我們的Qiling類似,它可以跨架構(gòu)模擬整個(gè)可執(zhí)行文件的源碼。但是,Qiling的不同之處在于:

1、Qiling是一個(gè)真正的分析框架,它允許我們構(gòu)建自己的動(dòng)態(tài)分析工具(使用Python)。除此之外,Qemu只是一款工具,而不是一個(gè)框架。

2、Qiling可以執(zhí)行動(dòng)態(tài)指令,并且能夠在運(yùn)行時(shí)進(jìn)行代碼修補(bǔ),這一點(diǎn)Qemu就無法做到了。

3、Qiling支持跨平臺(tái),但是Qemu用戶模式只能在與源代碼環(huán)境相同的操作系統(tǒng)上使用。

4、Qiling支持更多的平臺(tái),包括Windows、macOS、Linux&BSD,但Qemu用戶模式只支持Linux&BSD。

工具安裝

廣大研究人員可以使用下列命令安裝Qiling(注意:安裝前請(qǐng)搭建好Python 3環(huán)境):

python3 setup.py install

工具使用樣例

在下面的例子中,我們將演示如何使用Qiling框架來在一臺(tái)Linux設(shè)備上模擬目標(biāo)Windows可執(zhí)行文件:

from qiling import *# sandbox to emulate the EXEdef my_sandbox(path, rootfs):# setup Qiling engineql = Qiling(path, rootfs)# now emulate the EXEql.run()if __name__ == "__main__":# execute Windows EXE under our rootfsmy_sandbox(["examples/rootfs/x86_windows/bin/x86-windows-hello.exe"], "examples/rootfs/x86_windows")

在下面的例子中,我們將演示如何使用Qiling框架對(duì)Windows crackme進(jìn)行動(dòng)態(tài)修復(fù),并在“Congratulation”對(duì)話框中顯示相關(guān)信息:

from qiling import *def force_call_dialog_func(ql):# get DialogFunc addresslpDialogFunc = ql.unpack32(ql.mem_read(ql.sp - 0x8, 4))# setup stack memory for DialogFuncql.stack_push(0)
    ql.stack_push(1001)
    ql.stack_push(273)
    ql.stack_push(0)
    ql.stack_push(0x0401018)# force EIP to DialogFuncql.pc = lpDialogFuncdef my_sandbox(path, rootfs):
    ql = Qiling(path, rootfs)# NOP out some codeql.patch(0x004010B5, b'\x90\x90')
    ql.patch(0x004010CD, b'\x90\x90')
    ql.patch(0x0040110B, b'\x90\x90')
    ql.patch(0x00401112, b'\x90\x90')# hook at an address with a callbackql.hook_address(0x00401016, force_call_dialog_func)
    ql.run()if __name__ == "__main__":
    my_sandbox(["rootfs/x86_windows/bin/Easy_CrackMe.exe"], "rootfs/x86_windows")

工具演示視頻

Qiling DEMO 1:動(dòng)態(tài)修復(fù)Windows crackme

視頻地址:https://v.qq.com/x/page/m3061ozrz3s.html

Wannacry  DEMO:如何使用Qiling分析Wannacry惡意軟件

視頻地址:https://v.qq.com/x/page/h4061l4445g.html

Qltool

Qiling還提供了一個(gè)名為qltool的強(qiáng)大工具,它可以幫助我們快速模擬出目標(biāo)Shellcode或可執(zhí)行文件的源碼。

下面這條命令可以直接對(duì)目標(biāo)源碼進(jìn)行模擬:

$ ./qltool run -f examples/rootfs/arm_linux/bin/arm32-hello --rootfs examples/rootfs/arm_linux/

如需模擬Shellcode,則需要運(yùn)行下列命令:

$ ./qltool shellcode --os linux --arch x86 --asm -f examples/shellcodes/lin32_execve.asm

許可證協(xié)議

Qiling項(xiàng)目的開發(fā)與發(fā)布遵循GPLv2開源許可證協(xié)議

以上是“Qiling是一款什么框架”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI