本文目錄一覽:
- 1、rootkit.win32.apent.awk是什麼木馬
- 2、Trojan/Rootkit.o 是什麼病毒,有什麼危害?
- 3、FU_Rootkit
- 4、c語言windows程序,如何給其他程序傳遞消息。
- 5、我是想在r0上查看系統進程以找到那些可能被rootkit技術隱藏起來的進程
- 6、fu_rootkit
rootkit.win32.apent.awk是什麼木馬
此病毒是一個Rootkit病毒,由C語言編寫的驅動程序,提供破壞殺毒軟體的功能。
1、禁止反病毒軟體的運行:
病毒調用PsSetLoadImageNotifyRoutine函數註冊鏡像載入的通知常式,在通知常式中,病毒首先比較載入的鏡像的名稱是否包含下名稱:
vsdatant.sys,watchdog.sys,zclient.exe,bcfilter.sys,bcftdi.sys,bc_hassh_f.sys,
bc_ip_f.sys,bc_ngn.sys,bc_pat_f.sys,bc_prt_f.sys,bc_tdi_f.sys,filtnt.sys,
sandbox.sys,mpfirewall.sys,msssrv.exe,mcshield.exe,fsbl.exe,avz.exe,
avp.exe,avpm.exe,kav.exe,kavss.exe,kavsvc.exe,klswd.exe,ccapp.exe,
ccevtmgr.exe,ccpxysvc.exe,iao.exe,issvc.exe,rtvscan.exe,savscan.exe,bdss.exe,
bdmcon.exe,livesrv.exe,cclaw.exe,fsav32.exe,fsm32.exe,gcasserv.exe,icmon.exe,
inetupd.exe,nod32krn.exe,nod32ra.exe,pavfnsvr.exe,Windows-KB890830-V1.32.exe
對於包含上名稱的鏡像,病毒檢查其是否是有效的PE文件,如是則調用ZwOpenProcess、ZwTerminateProcess函數禁止其運行,以此來禁止反病毒軟體、防火牆等安全軟體的運行。
2、掛接API:
病毒通過修改cr0寄存器標誌位的方法關閉防寫,然後替換KeServiceDescriptorTable中的函數地址來Hook API,並記下原函數的地址。病毒掛接了如下兩個API:
ZwQueryDirectoryFile
ZwEnumerateValueKey
3、ZwQueryDirectoryFile鉤子過程:
在這個鉤子過程中,病毒調用記錄的原函數地址調用ZwQueryDirectoryFile函數,然後比較得到的目錄、文件名中是否包含”kernelw”字元串,如果包含將返回STATUS_NO_MORE_FILES,反之,將正常的結果返回。
病毒通過掛鉤ZwQueryDirectoryFile來隱藏包含有”kernelw”名稱的目錄或文件,以此來保護自己。
4、ZwEnumerateValueKey鉤子常式:
在這個鉤子過程中,病毒調用記錄的原函數地址調用ZwEnumerateValueKey函數,然後比較得到的節果中的鍵值是否包含”kernelw”字元串,如果包含則返回錯誤,反之,將正常的結果返回。
病毒通過掛鉤ZwEnumerateValueKey來隱藏鍵值包含有”kernelw”名稱鍵值,以此來保護自己。
5、鉤子保護線程:
病毒通過調用PsCreateSystemThread啟動一個新的線程,在這個線程中不斷循環檢測KeServiceDescriptorTable表中自己掛鉤的ZwQueryDirectoryFile、ZwEnumerateValueKey的地址是否被改變,如被改變則再次掛接這兩個函數。
6、鎖定ntoskrnl.exe文件
病毒通過調用ZwCreateFile、NtLockFile方式鎖定ntoskrnl.exe文件,以此來防止其它程序通過讀取ntoskrnl.exe中的數據恢復KeServiceDescriptorTable,以此來保護自己的API鉤子。
安全建議:
1 安裝正版殺毒軟體、個人防火牆和卡卡上網安全助手,並及時升級,瑞星殺毒軟體每天至少升級三次。
2 使用「瑞星系統安全漏洞掃描」,打好補丁,彌補系統漏洞。
3 不瀏覽不良網站,不隨意下載安裝可疑插件。
4 不接收QQ、MSN、Emial等傳來的可疑文件。
5 上網時打開殺毒軟體實時監控功能。
6 把網銀、網遊、QQ等重要軟體加入到「瑞星帳號保險柜」中,可以有效保護密碼安全。
清除辦法:
1 Rootkit.Win32.KeyLogger.a(鍵盤記錄器)病毒專殺工具連接:
2瑞星殺毒軟體清除辦法:
安裝瑞星殺毒軟體,升級到19.40.20版以上,對電腦進行全盤掃描,按照軟體提示進行操作,即可徹底查殺。
補充
別忘了關閉系統還原因為他會利用其再生
還有務必去安全模式下殺
Trojan/Rootkit.o 是什麼病毒,有什麼危害?
鍵盤記錄器Rootkit」
此病毒是一個Rootkit病毒,由C語言編寫的過濾驅動程序,提供鍵盤按鍵記錄功能。
該Rootkit病毒近期多次被Trojan.PSW.Win32.GameOnline型的病毒釋放使用,在該病毒體內可以看到「C:\new-gamehack\GameHack\Driver\bin\i386\mssock.pdb」的字樣,從編譯路徑可以看出該Rootkit顯然是作者特意為盜取遊戲密碼病毒所寫。
1、該病毒驅動程序入口函數執行如下操作:
(1) 檢查系統是否存在USB鍵盤設備:病毒首先通過調用ObReferenceObjectByName函數得到\Driver\hidusb的驅動對象,然後遍歷該驅動對象創建的功能設備的設備鏈。對設備鏈上的每個設備對象,遍歷其所在的設備棧,對設備棧上的每個設備對象,通過 DEVICE_OBJECT-DriverObject-DriverName獲取每個設備的驅動名稱,比較是否是Driver\kbdhid,如果找到表示有USB鍵盤設備,得到USB鍵盤設備對象的指針。
(2)對鍵盤設備掛接過濾驅動:建立名稱為「\Device\mssock」、符號鏈接名為「\??\mssock」、類型為「FILE_DEVICE_UNKNOWN」的設備,然後通過調用函數IoAttachDeviceToDeviceStack將該設備掛接到鍵盤設備所在的設備棧。
對於USB鍵盤設備,掛接的目標設備為通過前面搜索得到的USB設備對象。對於沒有USB鍵盤設備的情況,通過調用IoGetDeviceObjectPointer獲取名稱為「\Device\KeyboardClass0」的PS/2 鍵盤設備作為目標設備。
(3)填寫功能函數地址:填充卸載常式及各個IRP處理常式回調。
2、病毒的IRP_MJ_READ處理常式:設置完成常式後直接調用IofCallDriver向下一設備傳遞IRP
3、病毒驅動設立的對鍵盤讀的irp包的完成常式:在該完成常式中,病毒驅動實現了獲取並記錄鍵盤按鍵的功能。病毒將讀到的按鍵記錄到緩衝區(通過DEVICE_OBJECT.DeviceExtension傳遞地址)。同時病毒作者在這裡和IRP_MJ_DEVICE_CONTROL常式中通過寫0x60埠發送命令控制鍵盤NumLock燈的開閉,可能是作者為了調試時能夠方便的知道其過濾驅動的工作情況。
4、病毒驅動的IRP_MJ_DEVICE_CONTROL處理常式:在這個處理常式中,病毒對值為「0x 80102180」和「80102184」的IOCTL進行了處理。對於IOCTL = 0x 80102180 , 進行初始化處理,如清空記錄緩衝區、計數器等。對於IOCTL = 0x 80102180 ,病毒將把在緩衝區中記錄的按鍵掃描碼返回給調用者。使用這個rootkit的程序可以調用DeviceIoContro函數進行控制和讀取按鍵記錄。
5、卸載常式:
調用IoDetachDevice摘除過濾設備
調用IoDeleteSymbolicLink刪除符號鏈接
檢查是否有IRP未完成且IRP有效則調用IoCancelIrp嘗試取消這個IRP,如果取消IRP失敗則等待直到有下一次IRP然後取消。
調用IoDeleteDevice刪除設備。
由於該驅動在卸載常式中安全地刪除了過濾設備並嘗試取消未完成的IRP,所以該Rootkit可以被安全地卸載。不過一般的病毒作者很少會給用戶留下安全的卸載常式,所以懷疑該Rootkit是作者從網上抄來的代碼,作者有可能甚至不了解該驅動真正的工作原理。
「幻影后門」
這是一個具有感染功能、提供多種連接方式、可配置的後門病毒。
病毒作者在病毒體(客戶端控制程序)內留下了明確的簽名:
作者:dream2fly 作者網址: 作者郵箱:hyrootkit@126.com
作者的網址(論壇)中提供了多個自己編寫的軟體,包括本後門病毒。
作者的論壇中稱本病毒為UAM (Universal Access Manager),中文名稱「幻影遠程控制」,提供收費註冊使用。
病毒分為5個部分:服務端安裝程序(ctfime.exe)、服務端核心程序(SysIdt00.dll)、服務端啟動程序(被感染的explorer.exe)、客戶端控制程序(UAManager.exe)、隱藏埠的Rootkit (uamanger.sys)。
服務端安裝程序由C/C++語言編寫,UPX加殼保護。其它部分由C/C++或彙編語言編寫。
1、 服務端安裝程序
服務端安裝程序執行如下操作:
(1) 服務端安裝程序運行後從程序資源中釋放如下文件:
“%windir%\system32\SysIdt00.dll”、”%windir%\system32\DRIVERS\uamanger.sys”
(2) 然後將自己複製為”%windir%\system32\ctfime.exe”並啟動,同時刪除原文件。
(3) 將SysIdt00.dll、ctfime.exe、uamanger.sys的文件時間修改為同系統的cmd.exe相同,並將屬性設置為「系統+隱藏」。
(4) 修改系統的文件保護,然後感染系統的explorer.exe。
(5) 以隱藏窗口方式啟動被感染的explorer.exe。
2、 服務端啟動程序(被感染的explorer.exe)
服務端安裝程序在感染explorer.exe時,在其最後增加一個大小為0x1000的節寫入病毒代碼,並將入口點改為指向新的節的開始。被感染的病毒代碼執行時通過調用LoadLibraryA裝載SysIdt00.dll,然後返回原入口點。病毒感染explorer.exe的目的是為了在系統啟動時都能運行SysIdt00.dll,達到自啟動的目的。
3、服務端核心程序(SysIdt00.dll)
SysIdt00.dll中是遠端監控的核心代碼。
SysIdt00.dll通過被感染的explorer.exe被裝載後執行如下功能:
(1) 通過調用SeDebugPrivilege等函數提升許可權。
(2) 遍歷進程對找到的第一個」svchost」進程,將自己將注入其內存,然後通過CreateRemoteThread啟動其導出函數」Entry」。
SysIdt00.dll被注入svchost進程後執行如下功能:
(1) 通過嘗試打開名為”UAM_4803″的互斥量來檢查驅動是否載入,如載入則不做其它操作。
(2) 如果驅動沒有載入,根據設置(可在生成服務端時設置是否載入驅動)載入驅動”%windir%\system32\DRIVERS\uamanger.sys”。
(3) 啟動工作線程,實現遠程監控功能。
(4) 在實現連接時,通過寫文件”\\.\UAM”將連接的埠傳給驅動,實現隱藏埠。
(5) 根據設置的連接方式和密碼連接客戶端(控制端)
生成服務端時可以設置三種連接方式:
直接連接方式(設置監聽,由控制端來連接服務端)
反彈連接方式1 (設置ip地址和埠,服務端去連接控制端)
反彈連接方式2 (設置網頁地址,服務端從這個地址下載ip.txt,按照其內容去連接控制端)
(6) 遠程控制可以接受如下命令執行操作:
遠程shell (cmd.exe命令操作)
進程管理
文件管理
遠程桌面
視頻監控
日誌管理(查看、刪除系統日誌)
從任意網址下載、執行文件
遠程更新、卸載服務端
4、客戶端控制程序(UAManager.exe)
客戶端控制程序提供遠程連接控制功能,並且可以生成服務端程序。
在生成服務端程序時,可以進行如下設置:
連接方式和地址、連接密碼、是否載入驅動、服務端運行時間。
5、隱藏埠的Rootkit (uamanger.sys)
病毒名稱為Rootkit.Win32.PortHide.a,該驅動載入後首先創建一個名為\Device\hypy的設備和一個名為\??\hypy的符號鏈接用來和3環程序交互。這個設備名與3環程序所使用的符號鏈接(\\.\UAM)不同,所以顯然我們所截獲的樣本是無法正常工作的。
之後該驅動註冊IRP處理回調,在IRP_MJ_WRITE處理常式中,該驅動接受3環傳入的需要隱藏的埠號,並保存在一個全局變數中。不過該Rootkit作者顯然對驅動編寫很不熟悉,所有的IRP處理常式均沒有通過IofCompleteRequest完成,而是直接返回到I/O管理器。所以該驅動是無法正常地完成所希望實現的功能的。
該驅動通過替換KeServiceDescriptorTable中的函數地址來掛鉤ZwDeviceIoControlFile,該Rootkit通過掛鉤該API來隱藏指定埠。
「代理Rootkit變種XD」
此程序為rootkit類型程序
1.在驅動初始化時,對設備名和設備符號鏈接字元串進行解碼,並創建設備和相應的符號鏈接來與用戶態程序通信;
2.去除CR0寄存器中的WP位,以防止寫只讀頁出現頁異常,然後將內存中的加密字元串解碼並寫回,此解密字元串將用來與IOCTL傳遞的參數比較,從而判斷是否響應該用戶程序的IOCTRL;
3.獲取進程的EPROCESS地址,在此結構體中搜索”system”字元串偏移,然後根據此偏移計算進程名在EPROCESS中的偏移,以備比較進程時使用;
4.註冊IRP處理常式
支持:創建文件、設置註冊表鍵值、關閉線程和卸載驅動
5.創建系統線程,每隔指定的時間後,嘗試寫入驅動程序對應的註冊表項
6.註冊進程創建通知常式,每當創建新進程時,該驅動做如下操作:
1)獲取創建進程的EPROCESS,根據計算的偏移獲取當前進程名稱
2)判斷當前創建進程是否為userinit.exe或者是explorer.exe,
如果是則創建系統線程,寫入註冊表項
\registry\machine\software\microsoft\windows\currentversion\runonce
鍵值:
%systemroot%\system32\Rundll32.exe %systemroot%\system32\%s.dll,DllUnregisterServer
3)映射ntoskrnl.exe到內存中,獲取ntoskrnl.exe的服務表中指定服務函數的地址並保存,利用獲取的服務函數地址枚舉註冊表,試圖繞過其他軟體的攔截;
4)記錄 Winlogon.exe 的啟動,但沒有做其它操作,可能在以後的版本中會進行相關處理
「哈希信息竊取器」
這是一個C/C++編寫的黑客工具。
該工具主要用來獲取當前主機用戶的LM/NTLM散列,使用者可以通過該散列對主機用戶密碼進行暴力破解.
支持用法:pwdump2 pid of lsass.exe
主程序行為:
1.若沒有指定lsass.exe/pid參數,則執行如下操作:
[1].載入ntdll.dll,獲取導出函數
NtQuerySystemInformation
RtlCompareUnicodeString
[2].調用NtQuerySystemInformation,InformationClass=5,獲取進程信息列表
[3].遍歷列表查找LSASS.EXE,獲取該進程ID
2.打開自身進程,添加SeDebugPrivilege許可權,以允許當前進程對LSASS.EXE等進程進行內存操作和線程操作
3.打開查找到的進程LSASS.EXE,獲取該進程句柄
4.創建一事件,用於與通信線程同步
5.創建通信線程,執行如下操作:
[1]. 根據當前進程ID創建命名管道\\.\pipe\pwdump2-%ID%
[2]. 設置事件為有狀態,通知主線程管道創建成功
[3]. 連接到管道並從中讀取數據直到關閉
6.在創建的事件上等待,與之前創建的管道通信線程同步
7.向LSASS.EXE進程空間中寫入創建的管道名和輔助動態庫SamDump.dll導出函數名(DumpSam)作為參數,創建遠程線程.
在遠程線程中,根據傳遞的API地址,載入DLL,獲取DLL導出函數(DumpSam)並調用
8.等待遠程線程返回,釋放資源。
動態庫SamDump.dll導出函數DumpSam(char *)執行如下操作:
1.根據傳入參數打開通信管道
2.載入samsrv.dll,獲取如下函數地址
SamIConnect
SamrOpenDomain
SamrOpenUser
SamrQueryInformationUser
SamrEnumerateUsersInDomain
SamIFree_SAMPR_USER_INFO_BUFFER
SamIFree_SAMPR_ENUMERATION_BUFFER
SamrCloseHandle
3.依次調用如下函數
LsaOpenPolicy打開NT工作站
LsaQueryInformationPolicy獲取工作站域SID
SamIConnect連接到SAM資料庫
SamrOpenDomain根據域SID打開域
SamrEnumerateUsersInDomain枚舉域內用戶
SamrOpenUser打開域內指定用戶,獲取句柄
SamrQueryInformationUser枚舉域用戶信息
SamIFree_SAMPR_USER_INFO_BUFFER
SamrCloseHandle
FU_Rootkit
FU的下載地址:
FU的動畫教程:
FU是什麼?
簡單的來說,FU是一個隱藏進程的工具. 全稱好像叫做 FU_Rootkit
官網:
FU_Rootkit也算是「養在深閨人未識」了,比起Hxdef、AFX RootKit來名氣小多了,
FU_Rootkit是開源的,用C語言編寫。
FU_Rootkit主程序包括2個部分:
Fu.exe和Msdirectx.sys。 Msdirectx.sys能直接載入核心內存,Fu.exe則是相應的應用程序。
先來看看它的部分功能:
[-pl] xxx 列舉所有運行進程
[-ph] #PID 隱藏進程標識符為PID的進程
[-pld] 列舉所有載入驅動程序
[-phd] DRIVER_NAME 隱藏指定驅動
[-pas] #PID 提升進程標識符為PID的進程許可權至SYSTEM
[-prl] 列出可用的許可權名單
[-prs] #PID #privilege_name 提升進程標識符為PID的進程許可權至指定許可權
[-pss] #PID #account_name 改變進程令牌和SID
可以看出FU_Rootkit不僅可以隱藏進程和驅動,改變進程令牌和SID,還可以例舉用Hook技術隱藏的進程和驅動。
c語言windows程序,如何給其他程序傳遞消息。
大概思路是
你要獲取這個窗口的句柄,因為有了窗口句柄,你想幹什麼就可以幹什麼了。比如枚舉窗口下的子窗口句柄,然後發送數據就行了。
可是要獲取句柄,是不是應該要找到對應的進程?QQ在內核方面下了功夫,把很多關鍵函數hook了。所以你需要利用ARK內核級別的軟體工具查看到底哪些函數被hook了,然後通過手動或者編程實現還原。這樣你才有機會獲取QQ的進程。
就上面說的,實現起來就很難了。
說白了就是過QQ的驅動保護,這些技術可以參考《rootkit-windows內核的安全防護》等書籍。不過前提是基礎要好,不然看不懂。
我是想在r0上查看系統進程以找到那些可能被rootkit技術隱藏起來的進程
和入侵檢測術語字典( NSA Glossary of Terms Used in Security and Intrusion Detection)對rootkit的定義如下:A hacker security tool that captures passwords and message traffic to and from a computer. A collection of tools that allows a hacker to provide a backdoor into a system, collect information on other systems on the network,mask the fact that the system is compromised, and much more. Rootkit is a classic example of Trojan Horse software. Rootkit is available for a wide range of operating systems.
x7d3]1G!?2Rz0SupeSite/X-Space官方站OvP%T}:t_0NEw
好多人有一個誤解,他們認為rootkit是用作獲得系統root訪問許可權的工具。實際上,rootkit是攻擊者用來隱藏自己的蹤跡和保留root訪問許可權的工具。通常,攻擊者通過遠程攻擊獲得root訪問許可權,或者首先密碼猜測或者密碼強制破譯的方式獲得系統的訪問許可權。進入系統後,如果他還沒有獲得root許可權,再通過某些安全漏洞獲得系統的root許可權。接著,攻擊者會在侵入的主機中安裝rootkit,然後他將經常通過rootkit的後門檢查系統是否有其他的用戶登錄,如果只有自己,攻擊者就開始著手清理日誌中的有關信息。通過rootkit的嗅探器獲得其它系統的用戶和密碼之後,攻擊者就會利用這些信息侵入其它的系統。 SupeSite/X-Space官方站J l+br [0x-V
bX#[H5^*`G!r0什麼是rootkit
i*Q i [3tj*y3s0@(j0
8mh iuy}D0Rootkit出現於二十世紀90年代初,在1994年2月的一篇安全諮詢報告中首先使用了rootkit這個名詞。這篇安全諮詢就是CERT-CC的CA-1994-01,題目是Ongoing Network Monitoring Attacks,最新的修訂時間是1997年9月19日。從出現至今,rootkit的技術發展非常迅速,應用越來越廣泛,檢測難度也越來越大。其中針對SunOS和Linux兩種操作系統的rootkit最多(樹大招風:P)。所有的rootkit基本上都是由幾個獨立的程序組成的,一個典型rootkit包括: SupeSite/X-Space官方站:Rd]#m+a0]X l
SupeSite/X-Space官方站c yNmQO M
乙太網嗅探器程程序,用於獲得網路上傳輸的用戶名和密碼等信息。 SupeSite/X-Space官方站”V’wz,
特洛伊木馬程序,例如:inetd或者login,為攻擊者提供後門。
;S
可能還包括一些日誌清理工具
)M@H3uF/F}0一些複雜的rootkit還可以向攻擊者提供telnet、shell和finger等服務。
o_k(F{;Z |#k0還包括一些用來清理/var/log和/var/adm目錄中其它文件的一些腳本。
OUzU6R9j q h0Ocrf0SupeSite/X-Space官方站 gerx*eNjl(n,e
入侵者入侵後往往會進行清理腳印和留後門等工作,最常使用的後門創建工具就是rootkit。不要被名字所迷惑,這個所謂的「rootkit」可不是給超級用戶root用的,它是入侵者在入侵了一太主機後,用來做創建後門並加以偽裝用的程序包。這個程序包里通常包括了日誌清理器,後門等程序。同時,程序包里通常還帶有一些偽造的ps、ls、who、w、netstat等原本屬於系統本身的程序,這樣的話,程序員在試圖通過這些命令查詢系統狀況的時候,就無法通過這些假的系統程序發覺入侵者的行蹤。 SupeSite/X-Space官方站(m yZ1e3~(L1|
SupeSite/X-Space官方站2dPq+S1| GW/w.Ew l
在一些黑客組織中,rootkit (或者backdoor) 是一個非常感興趣的話題。各種不同的rootkit被開發並發布在internet上。在這些rootkit之中, LKM尤其被人關注, 因為它是利用現代操作系統的模塊技術。作為內核的一部分運行,這種rootkit將會越來越比傳統技術更加強大更加不易被發覺。一旦被安裝運行到目標機器上, 系統就會完全被控制在hacker手中了。甚至系統管理員根本找不到安全隱患的痕迹, 因為他們不能再信任它們的操作系統了。後門程序的目的就是甚至系統管理員企圖彌補系統漏洞的時候也可以給hacker系統的訪問許可權。 SupeSite/X-Space官方站zY jAUxM)SI\,\w
J J3Ej$u,T#{“jlQ:E0入侵者通過:設置uid程序, 系統木馬程序, cron後門等方法來實現入侵者以後從非特權用戶使用root許可權。
`TC%d;z+O1V’O.]n{0SupeSite/X-Space官方站c8Ai/Jh,K \
設置uid程序。 黑客在一些文件系統理放一些設置uid腳本程序。無論何時它們只要執行這個程序它們就會成為root。
V.W M.B#L4p t1FD0
G4~8t:rC0y0系統木馬程序。黑客替換一些系統程序,如”login”程序。因此, 只要滿足一定的條件,那些程序就會給黑客最高許可權。
qg6kb#F SeC0
s’w.I D Vc5R\~0Cron後門。黑客在cron增加或修改一些任務,在某個特定的時間程序運行,他們就可以獲得最高許可權。 SupeSite/X-Space官方站*j/y#t{6RGt-~
具體可能通過以下方法給予遠程用戶以最高訪問許可權: “.rhost” 文件, ssh認證密鑰, bind shell, 木馬服務程序。 SupeSite/X-Space官方站m ~?3^8x/B
“.rhosts” 文件。一旦 “+ +”被加入某個用戶的.rhosts文件里, 任何人在任何地方都可以用這個賬號來登陸進來而不需要密碼。 SupeSite/X-Space官方站”t+cR-B_^J N8U9X @
SupeSite/X-Space官方站:l#]_S4\
ssh認證密鑰。黑客把他自己的公共密鑰放到目標機器的ssh配置文件”authorized_keys”里, 他可以用該賬號來訪問機器而不需要密碼。 SupeSite/X-Space官方站XJ:?0pp.J
SupeSite/X-Space官方站6T\CoY9a}Y
Bind shell。黑客綁定一個shell到一個特定的tcp埠。任何人telnet這個埠都可以獲得交互的shell。更多精巧的這種方式的後門可以基於udp,或者未連接的tcp, 甚至icmp協議。 SupeSite/X-Space官方站Ix_F~R M
SupeSite/X-Space官方站~3[+[4?L’h\1j'{a
Trojaned服務程序。任何打開的服務都可以成為木馬來為遠程用戶提供訪問許可權。例如, 利用inetd服務在一個特定的埠來創建一個bind shell,或者通過ssh守護進程提供訪問途徑。
XF5Q ~u}u0在入侵者植入和運行後門程序之後, 他會設法隱藏自己存在的證據,這主要涉及到兩個方面問題: 如何來隱藏他的文件且如何來隱藏他的進程。
Yk g”e*|I s0為了隱藏文件, 入侵者需要做如下事情: 替換一些系統常用命令如”ls”, “du”, “fsck”。在底層方面, 他們通過把硬碟里的一些區域標記為壞塊並把它的文件放在那裡。或者如果他足夠瘋狂,他會把一些文件放入引導塊里。 SupeSite/X-Space官方站8~tG5q7f?JfJ;@,w,s
%KSTGJB;N[ Zz0為了隱藏進程, 他可以替換 “ps”程序, 或者通過修改argv[]來使程序看起來象一個合法的服務程序。有趣的是把一個程序改成中斷驅動的話,它就不會出現在進程表裡了。
fu_rootkit
fu_rootkit可以隱藏進程和驅動,改變進程令牌和SID,例舉用hook技術隱藏的進程和驅動,而且它是公開源代碼的。
===============================================
我在2004年11期黑防上刊登了《小工具巧刪Guest/Administrator賬戶》這篇文章,有不少朋友來信詢問工具是如何編寫的,其實這個工具裡面大部分代碼是我拷貝FU_Rootkit過來的。既然朋友們喜歡,這幾天我又多了好多想法,那我就來講講怎麼充分挖掘利用FU_Rootkit吧!
先去把FU_Rootkit 給Down下來,以前它在Windows 2000專業版下面提升進程許可權有問題,新版本已經修復這個問題。FU_Rootkit也算是「養在深閨人未識」了,比起Hxdef、AFX RootKit來名氣小多了,不過是金子終究是要發光的,這不,今天我們就讓它來發光了!
FU_Rootkit是開源的,用C語言編寫,很容易移植。我的開發環境是Windows 2000+SP4+VC6.0。FU_Rootkit主程序包括2個部分:Fu.exe和Msdirectx.sys。 Msdirectx.sys能直接載入核心內存,Fu.exe則是相應的應用程序。先來看看它的部分功能:
[-pl] xxx 列舉所有運行進程
[-ph] #PID 隱藏進程標識符為PID的進程
[-pld] 列舉所有載入驅動程序
[-phd] DRIVER_NAME 隱藏指定驅動
[-pas] #PID 提升進程標識符為PID的進程許可權至SYSTEM
[-prl] 列出可用的許可權名單
[-prs] #PID #privilege_name 提升進程標識符為PID的進程許可權至指定許可權
[-pss] #PID #account_name 改變進程令牌和SID
可以看出FU_Rootkit不僅可以隱藏進程和驅動,改變進程令牌和SID,還可以例舉用Hook技術隱藏的進程和驅動。我們今天要做的就是利用Msdirectx.sys完成我們自己的黑客工具集的編寫!
許可權提升
有了許可權我們才能任意地操作,讓電腦為我們實現各種功能,所以第一步首先是許可權提升。
我們知道,提升進程許可權可以用Psu工具,FU_Rootkit也能夠實現這個功能,它可以將任意進程提升到SYSTEM許可權——不光可以給其它進程提升許可權,還可以把自己的進程也提升為SYSTEM許可權哦(在下面的文章中你將可以看到這個功能是多麼的有用)!
第一步:載入Msdirectx.sys
具體代碼見InitDriver()函數。其實朋友們大可不必完全看懂這些代碼,把函數直接拷貝過去就OK了。
第二步:查找進程的PID
代碼如下:
const char DESTPROC[19] = “UserManager.exe”; // UserManager.exe是程序的進程名稱
AddPrivilege(SE_DEBUG_NAME); //提升進程DEBUG許可權
HANDLE hRemoteProcess = NULL;
DWORD pid = ProcessToPID(DESTPROC);//這裡的pid就是我們進程PID
// ProcessToPID函數如下:
DWORD ProcessToPID(const char *InputProcessName)
//將進程名轉換成進程PID的函數
{
DWORD aProcesses[1024], cbNeeded, cProcesses;
unsigned int i;
HANDLE hProcess = NULL;
HMODULE hMod = NULL;
char szProcessName[MAX_PATH] = “UnknownProcess”;
//提升進程許可權至DEBUG許可權
AddPrivilege(SE_DEBUG_NAME);
// 計算目前有多少進程, aProcesses[]用來存放有效的進程PIDs
if ( !EnumProcesses( aProcesses, sizeof(aProcesses), cbNeeded ) )
{
return 0;
}
cProcesses = cbNeeded / sizeof(DWORD);
// 按有效的PID遍歷所有的進程
for ( i = 0; i cProcesses; i++ )
{
// 打開特定PID的進程
hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, aProcesses[i]);
// 取得特定PID的進程名
if ( hProcess )
{
if ( EnumProcessModules( hProcess, hMod, sizeof(hMod), cbNeeded) )
{
GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName) );
//將取得的進程名與輸入的進程名比較,如相同則返回進程PID
if(!stricmp(szProcessName, InputProcessName))
{
CloseHandle( hProcess );
return aProcesses[i];
}
}
}//end of if ( hProcess )
}//end of for
//沒有找到相應的進程名,返回0
CloseHandle( hProcess );
return 0;
}
第三步:提升進程許可權至SYSTEM
具體代碼見UpdateToSystem()函數。這樣我們的進程UserManager.exe就具備了SYSTEM許可權了。
攻擊篇
當你得到肉雞的SYSTEM許可權後,當然要把自己的後門進程或驅動器隱藏,然後克隆賬號,留個隱藏賬號什麼的,下面我們就來看看這些功能如何用程序來實現。
1.克隆帳號
各位朋友看到小榕的CA工具是不是很眼饞,想不想自己寫一個?在黑防2003年的第7期《C語言克隆賬號》上已經有具體介紹。一般來講,克隆賬號的方法有2種:一種是利用系統服務的SYSTEM許可權讀寫SAM文件;第二種是利用驅動提升進程許可權。我們這裡採用第二種辦法。在《C語言克隆賬號》一文中,由於其不具備SYSTEM許可權,需要手工修改註冊表才能夠操作註冊表SAM文件夾,比較麻煩。在我們這裡當然是沒有問題的,將其代碼COPY過來,粘在我們工程裡面就可以了。
2.進程隱藏
進程隱藏實乃木馬病毒的必備防身本領,FU_Rootkit中的最基本功能之一就是進程隱藏,首先我們要知道進程的PID或者進程名,然後才能將它隱藏,隱藏代碼如下:
DWORD HideProc(DWORD pid)//pid是你要隱藏的進程的PID
{
DWORD d_bytesRead;
DWORD success;
if (!Initialized)
{
return ERROR_NOT_READY;
}
success = DeviceIoControl(gh_Device,
IOCTL_ROOTKIT_HIDEME,
(void *) pid,
sizeof(DWORD),
NULL,
0,
d_bytesRead,
NULL);
return success;
}
假如你要想找出隱藏的進程,可以採用工具RTDector0.62工具,黑防以前就介紹過。
3. 驅動隱藏
驅動隱藏?很少見吧。有經驗的管理員一般都會使用命令Drivers.exe來查看載入的驅動(Drivers.exe可以在Windows 2000的資源包裡面找到),
看到Msdirectx.sys暴露出來了吧?而FU_Rootkit就可以把自己的 Msdirectx.sys隱藏起來,運行的命令是:「C:\fu.exe –phd msdirectx.sys」。當然這個功能我們也可以很輕鬆地移植到我們的程序中去。
防禦篇
千萬不要以為FU_Rootkit得到SYSTEM許可權只是用來攻擊,不能防守,其實Rootkit是一把「雙刃劍」,運用得當,同樣是防禦的好幫手。同時,作為一名菜鳥,當然是防守為先,所以請看防守篇。
1. 系統用戶查看
眼下只要翻開一本黑客雜誌,經常看到什麼「隱藏帳號」、「不死帳號」什麼的,嚇得我等菜鳥心驚膽顫,經常對著用戶管理髮呆,究竟有沒有問題呢?這裡我們可以利用LPUSER_INFO_3讀取用戶信息,包括用戶名、用戶全名、用戶描述、登錄次數、登錄許可權以及上次登錄時間等參數,代碼較長而且簡單,這裡就不貼了,有興趣的可以查看DWORD CUserManagerDlg::UserALLE()函數。
當然,列舉賬號可以直接從SAM\\SAM\\Domains\\Account\\Users\\Names\中讀取,然後與LPUSER_INFO_3中讀出來的賬號進行對比,這樣就能找出隱藏的賬號,將那些隱藏的、不死的統統打回原形,讓你把賬號看得「清清楚楚,明明白白」。
2. 刪除Guest
先來看看如何刪除Guest用戶吧。獲取SYSTEM許可權後,只要刪除在註冊表SAM文件夾中對應的Guest和000001F5文件夾就OK了!
void CUserManagerDlg::Deleteguest()
{
BOOL upResult;
upResult=UpdateToSystem();
//先查看一下進程提示許可權至SYSTEM成功沒有
if(upResult)//如果許可權提升SYSTEM成功的話
{
// 刪除GUEST用戶!
BOOL dResult;
dResult=DelNT(HKEY_LOCAL_MACHINE,”SAM\\SAM\\Domains\\Account\\Users\\Names\\Guest”);//刪除Guest文件夾
BOOL dResult2;
dResult2=DelNT(HKEY_LOCAL_MACHINE,”SAM\\SAM\\Domains\\Account\\Users\\000001F5″);//刪除guest對應的ID號000001F5文件夾
if(dResultdResult2)
{
AfxMessageBox(“成功刪除GUEST用戶!”);
}
else
{
AfxMessageBox(“刪除GUEST用戶失敗!”);
}
}
else
{
AfxMessageBox(“提升至SYSTEM許可權失敗!”);
}
}
其中DelNT()函數是專門定義用來刪除註冊表子鍵的函數。
3. 刪除Administrator
看到標題你可不要嚇一跳,Administrator一般情況下是不能刪除的,當然你可以到控制面板-管理工具-計算機管理裡面重命名該賬戶,也可以使用NT Resource Kit提供的Passprop工具啟用對Administrator的鎖定。我們這裡當然要挑戰極限:刪除Administrator!代碼跟刪除Guest用戶的代碼差不多,換個參數就可以了,分別刪除註冊表SAM文件夾中的Administrator和000001F4文件夾就可以了。而且可以在Administrator當前用戶下刪除,強吧?嘿嘿。假如你只有這麼一個管理員賬號的話呢,不好意思,恭喜你:你的機器上從此沒有管理員了!
小提示:強烈建議刪除Administrator之前一定要先創建一個其它名字的管理員賬號!據《微軟信息安全文集》中說,刪除Administrator和Guest系統內置賬戶有可能導致破壞SAM資料庫,不過《微軟信息安全文集》的作者同時聲明:經他測試,沒有發現副作用。
4. 查殺進程篇
朋友們是否經常遇到這種情況:在任務管理器中發現一個未知進程,並且殺不掉,說是許可權不夠,這個問題在我們獲取System許可權後就不再是問題,現在病毒、木馬等都是雙進程,互相監控,給我們查殺進程帶來很大不便,需要我們能夠同時查殺多個進程。選用Listview控制項作為進程的列舉控制項,將Checkbox選項選中,這樣我們就可以同時選中多個進程進行查殺,爽吧?!
5. 列舉用Hook技術隱藏的進程和驅動
這個功能就是FU_Rootkit的過人之處了,可以幫助你查找利用HOOK技術隱藏的進程和木馬。實現方法比較簡單,大家可以去源碼中查看ListProc(void *buffer, int buff_size)和ListDriv(void)函數。
本文利用FU_Rootkit獲取SYSTEM許可權後,完成了很多實用的黑客小工具, System和Administrator許可權一般人看起來感覺都差不多,但在一些與系統內核交互的細節上,可以看出System許可權要更大一些。譬如說註冊表中的某些文件夾、對物理內存有讀寫能力等方面。因此,獲取System許可權後所能做的事情遠遠不止我們上面所說的這些,希望大家共同挖掘。
上有很多開源的好資源,研究並擴展其功能便可以寫出很多有用的小軟體。將其功能添加到我們小馬中去,將會大大提高其生命力。朋友們,現在是不是感覺黑客軟體不過如此,人人能寫?如果是這樣,也不枉費我一番苦心。由於工作關係,時間確實有限,不可能將上面的功能全部一一實現在代碼中,其實已經是體力活了,很多功能都只需要把代碼COPY進去就可以了。特將刪除Guest/Administrator的小工具和FU_Rootkit的代碼附上,朋友們升級了可要寄給我一份哦!
原創文章,作者:KYLD,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/144915.html