生活随笔
收集整理的這篇文章主要介紹了
开源一个自写的病毒技术工具集
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 前言
- 界面
- 代碼視圖
- 功能介紹
- 基礎技術
- 注入技術
- 啟動技術
- 自啟動技術
- 提權技術
- BypassUAC
- 隱藏技術
- 壓縮技術
- 加密技術
- 功能技術
- 進程遍歷
- 文件遍歷
- 桌面截屏
- 按鍵記錄
- 顯示CMD結果
- U盤小偷
- 文件監控
- 自刪除
- 說明
前言
前段時間一直在看Windows黑客編程技術詳解這本書,然后就想著與其一個例子一個例子的敲,倒不如把書上的例子寫成一個項目,作為一個集合,這樣既有利于面試 也方便以后代碼的復用。最后花了半個月的時間就有了下面的東西。
界面
用MFC寫的 界面有點low 不要在意這些細節。
代碼視圖
代碼的話放一個大概的類視圖 詳細的就不貼了實在是太多。
功能介紹
下面一一介紹每一個功能及其實現原理。
基礎技術
防雙開
使用最基礎的互斥體防雙開 函數寫在主程序。所以這個按鈕只是個象征性的東西。一直都是開啟的。
釋放資源
使用FindResourceW``SizeofResource``LoadResource和LockResource等API實現資源的釋放。
程序會在同級目錄下釋放后續功能測試所需的DLL。
注入技術
全局鉤子注入
使用Windows提供的SetWindowsHookEx將DLL注入到系統。測試DLL為MyHookDll.dll。可通過資源釋放技術釋放所需dll。也可自行編譯。HOOK的消息是WH_GETMESSAGE。dll中只寫了一個象征性的MessageBox。即拖拽dll點擊開始注入后,當系統中有任意進程接收到消息會彈出一個MessageBox。如果電腦中啟動的應用較多可能導致藍屏卡死等情況。
遠程線程注入
拖拽TestDll.dll(使用資源釋放技術釋放)或者自行編譯輸入需要注入的進程ID點擊開始注入后會將測試DLL注入到目標進程 測試DLL只有一個MessageBox如果注入的進程權限較高或者檢測較嚴格(如QQ.exe) 則可能失敗
實現原理
使用ZwCreateThreadEx函數創建遠程線程 實現DLL注入。之所以沒有CreateRemoteThread是因為CreateRemoteThread函數內部是被CreateRemoteThread調用的。相對來說這個函數的權限會更高。
APC注入
拖拽TestDll.dll(使用資源釋放技術釋放)或自行編譯輸入需要注入的進程名點擊開始注入后會將測試DLL注入到目標進程 測試DLL只有一個MessageBox如果注入的進程權限較高或者檢測較嚴格(如QQ.exe) 則可能失敗
實現原理
通過QueueUserAPC把一個函數添加到指定線程的APC隊列中
啟動技術
三種方式創建進程
任意拖拽一個exe到窗口,點擊按鈕后會使用三種不同的方式創建進程分別使用CreateProcess``ShellExecute和WinExec三種方式創建進程
內存加載運行dll
拖拽TestDll.dll(使用資源釋放技術釋放)點擊按鈕后程序會將TestDll模擬PE加載器加載到本程序內存后直接運行如果將DLL隱藏到資源可以不將DLL釋放到本地直接運行病毒WannaCry和BadRabbit都用了這種方式來運行自己的主邏輯程序
自啟動技術
注冊表
拖拽任意exe到窗口點擊按鈕后會將程序的完整路徑寫到注冊表啟動項目標程序隨系統啟動而啟動可自行查看提示窗口的注冊表路徑進行查看或刪除原理:通過RegOpenKeyEx和RegSetValueEx將程序寫入到\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
快速啟動目錄
拖拽任意exe到窗口點擊按鈕后會將程序的復制到系統的快速啟動目錄目標程序隨用戶登錄而自行啟動可自行查看提示窗口的快速啟動目錄路徑進行查看或刪除實現原理:使用SHGetSpecialFolderPath函數獲取windows系統中快速啟動目錄的路徑 然后,使用CopyFile函數,將想要自啟動的程序復制到快速啟動目錄下
計劃任務
此功能需使用管理員運行拖拽任意exe到窗口點擊按鈕后會將目標程序寫入到系統的計劃任務程序隨用戶登錄而啟動可自行在計劃任務中刪除添加的事件實現原理:調用COM組件將程序添加到計劃任務實現開機自啟動
系統服務
此功能需使用管理員運行拖拽ServiceExeTest.exe(服務應用程序 需自行編譯)到窗口點擊按鈕后會將ServiceExeTest.exe注冊為系統服務ServiceExeTest.exe將會在后臺運行ServiceExeTest.exe不含任何代碼 只是一個空的服務應用程序可自行使用任務管理器刪除實現原理:使用CreateService將編寫的服務應用程序注冊為系統服務實現開機自啟動
提權技術
提升為Debug權限
此功能需使用管理員運行點擊按鈕后程序將當前進程提升為為Debug權限
BypassUAC
首先將用戶賬戶控制設置為默認點擊按鈕后會繞過UAC的彈窗提升為管理員權限不彈窗開啟一個管理員權限的命令行實現原理:使用COM組件提權
查看當前進程權限
點擊按鈕后將在List控件上顯示當前程序的所有權限可使用此功能查看提升為Debug權限是否生效
隱藏技術
進程偽裝
點擊按鈕后會將本進程偽裝為Explorer.exe本程序為32位 在32為系統下此功能才有效實現原理:使用NtQueryInformationProcess獲取進程環境塊。修改指定進程環境塊的進程路徑以及命令行信息,從而達到進程偽裝的效果。
傀儡進程
拖拽任意一個exe到窗口點擊按鈕后會將一段MessageBox的ShellCode注入到目標exe實現原理:修改某一進程的內存數據,向內存數據寫入Shellcode代碼,并修改該進程的執行流程,使其執行Shellcode代碼。這樣,進程還是原來的進程,但執行的操作卻替換了。
DLL劫持
此功能沒有寫在界面上 需要自行手動操作我這里劫持的是FileCleaner2.0.exe的oledlg.dll找到DllHijackTest.dll(使用資源釋放技術釋放)或自行編譯將DLL重命名為oledlg.dll找到C:\Windows\SysWOW64目錄下的oledlg.dll將其重命名為Old_oledlg(如果無法重命名請自行百度解決方案)將oledlg.dll放到SysWOW64目錄下運行FileCleaner2.0.exe劫持的DLL在DllMian中寫了一個MessageBox函數 表示劫持成功實現原理:在PE加載器加載DLL時 使用自制的DLL替換掉原DLL ,在自制的DLL中轉發原DLL的導出函數并添加代碼
壓縮技術
數據解壓縮
在文本框中輸入數據 點擊按鈕,即可對輸入的數據壓縮和解壓縮實現原理:通過Windows提供的RtlDecompressBuffer和RtlGetCompressionWorkSpaceSize實現對數據的解壓縮
文件解壓縮
拖拽文件到窗口,點擊按鈕 即可對文件進行壓縮和解壓縮使用ZLIB壓縮庫實現對文件的解壓縮
加密技術
HASH
拖拽文件到窗口,點擊按鈕 即可求得文件的哈希值
AES加/解密
在數據窗口輸入數據 點擊按鈕 即可求得數據經過AES加解密后的值
RSA加/解密
在數據窗口輸入數據 點擊按鈕 即可求得數據經過RAS加解密后的值
實現原理
以上加解密都是使用Windows自帶的加密庫來實現的,使用的是cryptoAPI。
功能技術
進程遍歷
對當前所有進程進行遍歷
實現原理:使用Process32First和Process32Next
文件遍歷
對當前系統所有文件進行遍歷 可查看文件屬性和磁盤信息可查看文件屬性和磁盤信息 雙擊可進入下一層目錄實現原理:使用FindFirstFile和FindNextFile
桌面截屏
對當前屏幕進行截屏 截圖存放在程序同級目錄實現原理:通過GDI的方式實現屏幕畫面抓取
按鍵記錄
實現了一個鍵盤記錄器 記錄下所有的按鍵記錄按鍵記錄存儲在D盤下的log.txt實現原理:利用GetAsyncKeyState函數。該函數可以判斷按鍵狀態,根據是否為按下狀態來判斷用戶是否進行了按鍵操作,從而記錄之所以沒有用全局鍵盤鉤子和原始輸入模型是因為這兩種方式都有各自的限制,MFC實現起來不太容易
顯示CMD結果
在命令框輸入CMD命令 例如ping 127.0.0.0等命令執行完成會在數據窗口會顯示CMD命令的執行結果由于環境不一致 這個功能可能會執行失敗實現原理:使用命名管道進行進程通訊,從而獲得cmd的執行結果
U盤小偷
在功能窗口此功能默認開啟對U盤的插入和拔出進行監控拷貝U盤里所有的.txt文件到程序的當前目錄下,如需拷貝其他文件則修改源碼實現原理:響應WM_DEVICECHANGE監控U盤,獲取盤符之后進行文件遍歷 即可拷貝所需要的文件
文件監控
對D盤上的文件操作進行監控實現原理:Windows提供了一個文件監控的接口函數ReadDirectoryChangesW,這個監控函數可以對計算機上的所有文件操作進行監控。
自刪除
點擊后程序將退出進程 并刪除自身實現原理:使用批處理
說明
本程序僅用于交流和研究,請勿用于其他用途。有任何后果與本人無關由于環境不一樣 所以不能保證每個功能在每臺機器上都是可行的。如果程序有bug還請多多體諒如果發現缺dll或者沒有測試文件的情況在工程項目下都可找到,可自行編譯。本程序編寫環境為W10 64 VS2017 最后附上源碼
Github地址:https://github.com/TonyChen56/HackerTools
總結
以上是生活随笔為你收集整理的开源一个自写的病毒技术工具集的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。