最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

這幾招技術(shù),病毒木馬經(jīng)常用!

2021-09-24 20:11 作者:代碼熬夜敲  | 我要投稿

大家好 我是周杰倫

惡意代碼的分類包括計(jì)算機(jī)病毒、蠕蟲(chóng)、木馬、后門、Rootkit、流氓軟件、間諜軟件、廣告軟件、僵尸(bot) 、Exploit等等,雖然功能不同,形態(tài)各異,但有些技術(shù)是它們基本都會(huì)使用的,這篇文章就來(lái)簡(jiǎn)單聊一聊。

惡意代碼常見(jiàn)功能技術(shù)如下:

  • 進(jìn)程遍歷

  • 文件遍歷

  • 按鍵記錄

  • 后門

  • 桌面截屏

  • 文件監(jiān)控

  • 自刪除

  • U盤監(jiān)控

知己知彼,百戰(zhàn)不殆。這里旨在給反病毒工程師提供參照,切勿從事違法事情,病毒作者請(qǐng)繞過(guò)。

0x01 進(jìn)程遍歷

進(jìn)程遍歷獲取計(jì)算機(jī)上所有進(jìn)程的信息(用戶進(jìn)程,系統(tǒng)進(jìn)程),通常是為了檢索受害進(jìn)程,檢測(cè)是否運(yùn)行在虛擬機(jī)中,以及是否存在殺軟等,有時(shí)候反調(diào)試技術(shù)也會(huì)檢測(cè)進(jìn)程名,所以在惡意代碼中進(jìn)程遍歷很常見(jiàn)。

具體流程

1 調(diào)用CreateToolhelp32Snapshot獲取所有進(jìn)程的快照信息之所以稱為快照是因?yàn)楸4娴氖侵暗男畔ⅲ摵瘮?shù)返回進(jìn)程快照句柄。

2 調(diào)用Process32First獲取第一個(gè)進(jìn)程的信息,返回的進(jìn)程信息保存在PROCESSENTRY32結(jié)構(gòu)體中,該函數(shù)的第一個(gè)參數(shù)是CreateToolhelp32Snapshot返回的快照句柄。

3 循環(huán)調(diào)用Process32Next從進(jìn)程列表中獲取下一個(gè)進(jìn)程的信息,直到Process32Next函數(shù)返回FALSE,GetLastError的錯(cuò)誤碼為ERROR_NO_MORE_FILES,則遍歷結(jié)束

4 關(guān)閉快照句柄并釋放資源

遍歷線程和進(jìn)程模塊的步驟和上面的相似,線程遍歷使用Thread32First和Thread32Next,模塊遍歷使用Module32First和Module32Next

0x02 文件遍歷

文件操作幾乎是所有惡意代碼必備的功能,木馬病毒竊取機(jī)密文件然后開(kāi)一個(gè)隱秘端口,就算是在內(nèi)核模式下,也經(jīng)常會(huì)創(chuàng)建寫入讀取文件,文件功能經(jīng)常用到。

文件搜索功能主要是通過(guò)調(diào)用FindFirstFile和FindNextFile來(lái)實(shí)現(xiàn)

具體流程

1 調(diào)用FindFirstFile函數(shù),該函數(shù)接收文件路徑,第二個(gè)參數(shù)指向WIN32_FIND_DATA結(jié)構(gòu)的指針。若函數(shù)成功則返回搜索句柄。該結(jié)構(gòu)包含文件的名稱,創(chuàng)建日期,屬性,大小等信息。該返回結(jié)構(gòu)中的成員dwFileAttributes為FILE_ATTRIBUTE_DIRECTORY時(shí)表示返回的是一個(gè)目錄,否則為文件,根據(jù)cFileName獲取搜索到的文件名稱。如果需要重新對(duì)目錄下的所有子目錄文件都再次進(jìn)行搜索的話,則需要對(duì)文件屬性進(jìn)行判斷。若文件屬性是目錄,則繼續(xù)遞歸搜索,搜索其目錄下的目錄和文件。

2 調(diào)用FindNextFile搜索下一個(gè)文件,根據(jù)返回值判斷是否搜索到文件,若沒(méi)有則說(shuō)明文件遍歷結(jié)束。

3 搜索完畢后,調(diào)用FindClose函數(shù)關(guān)閉搜索句柄,釋放資源緩沖區(qū)資源。

0x03 按鍵記錄

收集用戶的所有按鍵信息,分辨出哪些類似于賬號(hào),密碼等關(guān)鍵信息進(jìn)行利用,竊取密碼,這里用原始輸入模型直接從輸入設(shè)備上獲取數(shù)據(jù),記錄按鍵信息。

要想接收設(shè)備原始輸入WM_INPUT消息,應(yīng)用程序必須首先使用RegisterRawInputDevice注冊(cè)原始輸入設(shè)備,因?yàn)樵谀J(rèn)情況下,應(yīng)用程序不接受原始輸入。

具體流程

1 注冊(cè)原始輸入設(shè)備

一個(gè)應(yīng)用程序必須首先創(chuàng)建一個(gè)RAWINPUTDEVICE結(jié)構(gòu),這個(gè)結(jié)構(gòu)表明它所希望接受設(shè)備的類別,再調(diào)用RegisterRawInputDevices注冊(cè)該原始輸入設(shè)備。將RAWINPUTDEVICE結(jié)構(gòu)體成員dwFlags的值設(shè)置為RIDEV_INPUTSINK,即使程序不處于聚焦窗口,程序依然可以接收原始輸入。

2 獲取原始輸入數(shù)據(jù)

消息過(guò)程中調(diào)用GetInputRawData獲取設(shè)備原始輸入數(shù)據(jù)。在WM_INPUT消息處理函數(shù)中,參數(shù)lParam存儲(chǔ)著原始輸入的句柄。此時(shí)可以直接調(diào)用GetInputRawData函數(shù),根據(jù)句柄獲取RAWINPUT原始輸入結(jié)構(gòu)體的數(shù)據(jù)。dwType表示原始輸入的類型,RIM_TYPEKEYBOARD表示是鍵盤的原始輸入,Message表示相應(yīng)的窗口消息。WM_KEYBOARD表示普通按鍵消息,WM_SYSKEYDOWN表示系統(tǒng)按鍵消息,VKey存儲(chǔ)鍵盤按鍵數(shù)據(jù)。

3 保存按鍵信息

GetForegroundWindow獲取按鍵窗口的標(biāo)題,然后調(diào)用GetWindowText根據(jù)窗口句柄獲取標(biāo)題,存儲(chǔ)到本地文件。

0x04 后門

后門常以套件的形式存在,用于將受害者信息發(fā)送給攻擊者或者傳輸惡意可執(zhí)行程序(下載器),最常用的功能是接收攻擊端傳送過(guò)來(lái)的命令,執(zhí)行某些操作。

Windows系統(tǒng)中有很多WIN32 API可以執(zhí)行CMD命令,例如system Winexe CreateProcess等。這里介紹通過(guò)匿名管道實(shí)現(xiàn)遠(yuǎn)程CMD

具體過(guò)程

1 調(diào)用CreatePipe創(chuàng)建匿名管道,獲取管道數(shù)據(jù)讀取句柄和寫入句柄

2 初始化STARTUPINFO結(jié)構(gòu)體,隱藏進(jìn)程窗口,并把管道數(shù)據(jù)寫入句柄賦值給新進(jìn)程控制臺(tái)窗口的緩存句柄

3 調(diào)用CreateProcess函數(shù)創(chuàng)建進(jìn)程,執(zhí)行CMD命令并調(diào)用WaitForSingleObject等待命令執(zhí)行完

4 調(diào)用ReadFile根據(jù)匿名管道的數(shù)據(jù)讀取句柄從匿名管道的緩沖區(qū)中讀取數(shù)據(jù)

5 關(guān)閉句柄,釋放資源

0x05 文件監(jiān)控

全局鉤子可以實(shí)現(xiàn)系統(tǒng)監(jiān)控,Windows提供了一個(gè)文件監(jiān)控接口函數(shù)ReadDirectoryChangesW,該函數(shù)可以對(duì)計(jì)算機(jī)上所有文件操作進(jìn)行監(jiān)控。

在調(diào)用 ReadDirectoryChangesW設(shè)置監(jiān)控過(guò)濾條件之前,需要通過(guò)CreateFile函數(shù)打開(kāi)監(jiān)控目錄,獲取監(jiān)控目錄的句柄,之后才能調(diào)用ReadDirectoryChangesW函數(shù)設(shè)置監(jiān)控過(guò)濾條件并阻塞,直到有滿足監(jiān)控過(guò)濾條件的操作,ReadDirectoryChangesW才會(huì)返回監(jiān)控?cái)?shù)據(jù)繼續(xù)往下執(zhí)行。

具體過(guò)程

1 打開(kāi)目錄,獲取文件句柄,調(diào)用CreateFile獲取文件句柄,文件句柄必須要有FILE_LIST_DIRECTORY權(quán)限

2 調(diào)用ReadDirectoryChangesW設(shè)置目錄監(jiān)控

3 判斷文件操作類型,只要有滿足過(guò)濾條件的文件操作,ReadDirectoryChangesW函數(shù)會(huì)立馬返回信息,并將其返回到輸出緩沖區(qū)中,而且返回?cái)?shù)據(jù)是按結(jié)構(gòu)體FILE_NOTIFY_INFORMATION返回的

調(diào)用一次ReadDirectoryChangesW函數(shù)只會(huì)監(jiān)控一次,要想實(shí)現(xiàn)持續(xù)監(jiān)控,則需要程序循環(huán)調(diào)用來(lái)設(shè)置監(jiān)控并獲取監(jiān)控?cái)?shù)據(jù),由于持續(xù)的目錄監(jiān)控需要不停循環(huán)調(diào)用會(huì)導(dǎo)致程序阻塞,為了解決主線程阻塞的問(wèn)題,可以創(chuàng)建一個(gè)文件監(jiān)控子線程,把文件監(jiān)控的實(shí)現(xiàn)代碼放到子線程中

0x06 自刪除

自刪除功能對(duì)病毒木馬來(lái)說(shuō)同樣至關(guān)重要,它通常在完成目標(biāo)任務(wù)之后刪除自身,不留下任何蛛絲馬跡,自刪除的方法有很多種,常見(jiàn)的有利用MoveFileEx重啟刪除和利用批處理刪除兩種方式

MoveFileEx重啟刪除

MOVEFILE_DELAY_UNTIL_REBOOT這個(gè)標(biāo)志只能由擁有管理員權(quán)限的程序或者擁有本地系統(tǒng)權(quán)限的程序使用,而且這個(gè)標(biāo)志不能MOVEFILE_COPY_ALLOWED一起使用,并且,刪除文件的路徑開(kāi)頭需要加上“?"前綴

利用批處理命令刪除

del %0 批處理命令會(huì)將自身批處理文件刪除而且不放進(jìn)回收站

具體流程

1 構(gòu)造自刪除批處理文件,該批處理文件的功能就是先利用choice或ping命令延遲一定的時(shí)間,之后才開(kāi)始執(zhí)行刪除文件操作,最后執(zhí)行自刪除命令

2 在程序中創(chuàng)建一個(gè)新進(jìn)程并調(diào)用批處理文件,程序在進(jìn)程創(chuàng)建成功后,立刻退出整個(gè)程序

看完這篇文章,你有什么收獲嗎,歡迎轉(zhuǎn)發(fā)分享哦~

有疑問(wèn)的朋友歡迎留言討論,也歡迎大家直接問(wèn)我(順便贈(zèng)送一套安全學(xué)習(xí)資料):

這幾招技術(shù),病毒木馬經(jīng)常用!的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
绥棱县| 克拉玛依市| 桂林市| 乌兰察布市| 衡山县| 博野县| 隆安县| 苏尼特右旗| 临邑县| 小金县| 宜兰县| 彰化县| 石屏县| 长岭县| 新蔡县| 邢台市| 缙云县| 南木林县| 旬阳县| 芦溪县| 西宁市| 三明市| 太白县| 华坪县| 额敏县| 营山县| 高尔夫| 吉木乃县| 吉首市| 鄢陵县| 平阳县| 安陆市| 浠水县| 万载县| 荣成市| 保定市| 尖扎县| 秦安县| 东乌珠穆沁旗| 搜索| 那坡县|