1. 程式人生 > >2016-2017-1 20155215 信息安全技術 補課上測試

2016-2017-1 20155215 信息安全技術 補課上測試

debug 序列 tube which amp 什麽是 proc shell 漏洞

2016-2017-1 20155215 信息安全技術 補課上測試


因為沒有及時提交課上的測試成績,所以我在課後做了一些關於惡意代碼的學習,作為一個補充提交項。


惡意代碼分析技術。

  1. 靜態分析初級技術
  2. 動態分析初級技術
  3. 靜態分析高級技術
  4. 動態分析高級技術

靜態分析技術通常是研究惡意代碼的第一步,是分析程序指令與結構來確定功能的過程,此時程序不是在運行狀態的。

反病毒掃描

反病毒軟件顯然不完美,主要依靠惡意代碼特征片段的匹配(病毒文件特征庫),還有基於行為模式的匹配分析(啟發式檢測)惡意代碼編寫者很容易修改或者轉化自己的特征代碼片段,啟發式檢測也仍然會被新型的惡意代碼繞過。不同的反病毒軟件使用了不同的特征庫和啟發式檢測方法。

惡意代碼的指紋

hash是唯一標識惡意代碼的常用方法,SHA-1算法,MD5算法是最常用的兩種hash函數。

查找字符串

程序中的字符串就是一段可打印的字符序列,從其中會包含很多信息,比如彈出的消息,讀取的位置,鏈接的URL等等。使用Kali中的Strings程序搜索可執行文件的字符串,通常以Unicode和ASCII格式存儲。
兩種類型格式都以NULL結束符,表示字符串是完整的 ASCII字符串每個字符使用一個字節,Unicode使用兩個字節。然而有些時候檢測到的也並非是真正的字符串,可能是內存地址,CPU指令序列。

加殼與混淆惡意代碼

加殼後的惡意程序會被壓縮,混淆技術則隱藏了執行的過程。有時候使用Strings程序只搜索出很少的字符串,大部分是加殼或者混淆的,但是此類程序至少會有兩個函數LoadLibrary和GetProcAddress 用來加載和使用其他函數。加殼程序運行先自身脫殼解壓縮自身的文件,然後在運行,我們利用靜態分析只能看到外面的脫殼代碼。

PE文件頭與分節

PE文件是Windows系統下使用的可執行文件格式,它是微軟在UNIX平臺的COFF(Common Object File Format 通用對象文件格式)基礎上制作而成。最初設計用來提高在不同系統上的移植性,其實只能用在Windows操作系統上。
PE是指32位可執行文件,64位的可執行文件稱為PE+ 或者PE32+,並非PE64。
PE文件以一個文件頭開始,其中包括代碼信息,應用程序類型,所需的庫函數與空間要求。

鏈接庫與函數

對於分析惡意代碼,收集它的導入表至關重要,導入表是一個程序使用的存儲於另一個程序的那些函數。靜態鏈接(庫與程序靜態鏈接時,庫中的所有代碼都會復制到程序中,程序增大很多)常見於UNIX和Linux系統中,而Windows中都是動態鏈接(只有在程序運行時才鏈接到庫)DLL文件又稱應用程序拓展,在Win中許多應用程序並不是一個完整的可執行文件,它們被分割成相對獨立的動態鏈接庫,DLL文件。

我在網上搜索了解了一些關於惡意代碼分析的內容,其中有一本書叫做《惡意代碼分析實戰》

技術分享圖片

《惡意代碼分析實戰》是一本內容全面的惡意代碼分析技術指南,其內容兼顧理論,重在實踐,從不同方面為讀者講解惡意代碼分析的實用技術方法。
《惡意代碼分析實戰》分為21章,覆蓋惡意代碼行為、惡意代碼靜態分析方法、惡意代碼動態分析方法、惡意代碼對抗與反對抗方法等,並包含了shellcode 分析,C++惡意代碼分析,以及64 位惡意代碼分析方法的介紹。本書多個章節後面都配有實驗並配有實驗的詳細講解與分析。通過每章的介紹及章後的實驗,本書一步一個臺階地幫助初學者從零開始建立起惡意代碼分析的基本技能。

然後我還在I春秋上找到了一個關於《惡意代碼分析實戰》這本書的課後習題講解課程,並學習了該課程的第一個視頻。其中演示了一個惡意代碼靜態分析實驗。

技術分享圖片

  • 實驗內容:

技術分享圖片

技術分享圖片

惡意代碼分析實戰課後習題分析

此外,我還發現了一款惡意代碼分析器,SCDBG。


惡意代碼分析利器 – scdbg

什麽是scdbg

  scdbg是一款多平臺開源的Shellcode模擬運行、分析工具。其基於libemulibrary搭建的虛擬環境,通過模擬32位處理器、內存和基本Windows API運行環境來虛擬執行Shellcode以分析其行為。有了虛擬執行媽媽再也不用擔心我的電腦中病毒了。

  

關於Shellcode:

實際是一段代碼(也可以是填充數據),是用來發送到服務器利用特定漏洞的代碼,一般可以獲取權限。另外,Shellcode一般是作為數據發送給受攻擊服務器的。 Shellcode是溢出程序和蠕蟲病毒的核心,提到它自然就會和漏洞聯想在一起,畢竟Shellcode只對沒有打補丁的主機有用武之地。網絡上數以萬計帶著漏洞頑強運行著的服務器給hacker和Vxer豐盛的晚餐。漏洞利用中最關鍵的是Shellcode的編寫。由於漏洞發現者在漏洞發現之初並不會給出完整Shellcode,因此掌握Shellcode編寫技術就顯得尤為重要。

scdbg的基本原理

  眾所周知,shellcode為了實現特定的功能必須通過調用系統API來完成-不論先前怎怎麽變形怎麽加密最後都會調用系統API。scdbg就是通過模擬執行以及hook多達200多個API來探測shellcode的行為。當然比如創建文件和訪問網絡這些危險的API並沒有真正的在本機執行,而是通過傳回虛假的返回值來欺騙shellcode讓其平穩運行。

但是,我將scdbg下載下來之後卻發現無法使用,按照網上的一些說明輸入命令行也失敗了。

技術分享圖片

  • readme文檔如下:
 _______________
     |               |
     |               |
     |    libemu     |
     | x86 emulation |
     |               |
     |               |
     |               |
     \ O             |
      \______________|

    
libemu homepage: http://libemu.mwcollect.org

This build supports: 
   100 hooks, 13 dlls, SEH, condensed output, interactive debug shell 

see CHANGES for more details. note currently version is VS_LIBEMU repository 
which is a Windows native build that is several years more advanced.

Home Page:        http://sandsprite.com/blogs/index.php?uid=7&pid=152
Manual:           http://sandsprite.com/CodeStuff/scdbg_manual/MANUAL_EN.html
Basic Video:      http://www.youtube.com/watch?v=jFkegwFasIw
Adv Video:        http://youtu.be/HZE2c_If6hU
Demo Shellcodes:  http://sandsprite.com/blogs/files/sc_samples.zip


building from svn:
  autoreconf -v -i
  ./configure --prefix=/opt/libemu; make install

scdbg binary is in ./tools/sctest/ after compilation

這是輸入命令行之後:
技術分享圖片

參考資料:

  • scdbg download
  • SCDBG

2016-2017-1 20155215 信息安全技術 補課上測試