原帖地址:http://bbs.pcvista.cn/read.php?tid=11729&page=e&#a
作者:FlowerCode
要不是我的两个朋友各写了一篇有关这软件的介绍,我还真不知道有这么个程序。vU*<# ouE
我落后了,我严重的落后了。
拿来看了下,有个 Anti InlineHook,似乎挺高明的。
QUOTE:
部分行为比较恶劣的木马,为了防止自身被删除,会使用一种叫 InlineHook的技术,挂构系统文件,除了本身会危害系统之外,这种挂钩行为也会 ^极大的影响系统稳定。本软件可检测和清除这种木马。
x!U)lS
我想作者也许看了 KillVxk 经典的固化挂钩,呵呵,挂钩系统文件。X_V{,#
不管怎么说,看上去似乎的确很厉害的样子。那来试试吧。Ue.?Z:l$/
打开 IceSword,众所周知,IceSword为了防止自身被非法关闭而采用Inline Hook |技术挂钩了ntoskrnl.exe!NtOpenProcess,ntoskrnl.exe!NtOpenThread,ntoskrnl.exe!NtTerminateProcess,ntoskrnl.exe!NtTerminateThread,其用户态 程序为了防止全局钩子还Inline Hook了Kernel32.dll!LoadLibraryExW。那么能不能被检测到呢?打开“反病毒木马专家”,选择“辅助”-;~9-“AntiInlineHook”。嗯?怎么还要选择进程?那也许是比较先进的技术吧。选择In+
“IceSword.exe”,点击“检测”。
QUOTE:
--------------------------- 3I-l,9- oW
Error RA\}0HjX
--------------------------- iH"MZ
Snapshot failed NtZ$_e*
--------------------------- V'o"NCWq
确定 CpNT0^nQ
---------------------------
#<wmU_n
喔喔,似乎没有汉化完全的说……作者要把这里汉化一下呀。
QUOTE:
--------------------------- 7Bsy%$WP
完成 RN
--------------------------- 1+[H"q`T]Q
检测完成 FsDl[Q$ h
--------------------------- d|]zc
确定 iL?HT-L
---------------------------
"lRC_O#Lf
U{K59K4^3W
什么也没发现?好奇怪……那也许是刚才那个错误影响的吧…… q?h+knTMx\
手动清除掉IS的内核态钩子,再试…… r'JMBW$-
aq!;p>
QUOTE:
--------------------------- >$!%H3%[]&
完成 {Wm( oG`
--------------------------- M'}3]r
检测完成 !7=6eT
--------------------------- `jtI5n}t_6
确定 zBAw6S@&z
---------------------------
)U.e u!
UQ7Wr6=
这次没有错误了,但怎么还是什么也没检测到呢……奇怪……*我发现其安装目录下有一个DetectInlineHook.dll,这大概就是检测Inline用的文件吧,我们来看看……
CODE:
.rdata:1002901C ; char aRegcreatekeyex[] s}Vux 4A5
.rdata:1002901C aRegcreatekeyex db 'RegCreateKeyExA',0 ; DATA XREF: DllMain(x,x,x)+181o
.rdata:1002902C db 0
.rdata:1002902D db 0
.rdata:1002902E db 0 X
.rdata:1002902F db 0
.rdata:10029030 ; char aRegcreatekeya[] N
.rdata:10029030 aRegcreatekeya db 'RegCreateKeyA',0 ; DATA XREF: DllMain(x,x,x)+16Do
.rdata:1002903E align 10h
.rdata:10029040 ; char aRegopenkeya[]
.rdata:10029040 aRegopenkeya db 'RegOpenKeyA',0 ; DATA XREF: DllMain(x,x,x)+159o `
.rdata:1002904C db 0
.rdata:1002904D db 0
.rdata:1002904E db 0
.rdata:1002904F db 0
.rdata:10029050 ; char aRegenumvaluea[]
.rdata:10029050 aRegenumvaluea db 'RegEnumValueA',0 ; DATA XREF: DllMain(x,x,x)+145o
.rdata:1002905E align 10h
.rdata:10029060 ; char aRegenumkeyexa[]
.rdata:10029060 aRegenumkeyexa db 'RegEnumKeyExA',0 ; DATA XREF: DllMain(x,x,x)+131o
.rdata:1002906E align 10h L
.rdata:10029070 ; char aRegenumkeya[]
.rdata:10029070 aRegenumkeya db 'RegEnumKeyA',0 ; DATA XREF: DllMain(x,x,x)+11Do
.rdata:1002907C db 0eJ
.rdata:1002907D db 0
.rdata:1002907E db 0
.rdata:1002907F db 0
.rdata:10029080 ; char aRegdeletevalue[]
.rdata:10029080 aRegdeletevalue db 'RegDeleteValueA',0 ; DATA XREF: DllMain(x,x,x)+109o
.rdata:10029090 db 0
.rdata:10029091 db 0
.rdata:10029092 db 0
.rdata:10029093 db 0
.rdata:10029094 ; char aRegdeletekeya[] >
.rdata:10029094 aRegdeletekeya db 'RegDeleteKeyA',0 ; DATA XREF: DllMain(x,x,x)+F5o
.rdata:100290A2 align 4
.rdata:100290A4 ; char aAdvapi32_dll[]
.rdata:100290A4 aAdvapi32_dll db '\advapi32.dll',0 ; DATA XREF: DllMain(x,x,x)+E1o
.rdata:100290B2 align 4
.rdata:100290B4 ; char aFindnextfilea[]
.rdata:100290B4 aFindnextfilea db 'FindNextFileA',0 ; DATA XREF: DllMain(x,x,x)+9Eo
.rdata:100290C2 align 4
.rdata:100290C4 ; char aFindfirstfilea[]
.rdata:100290C4 aFindfirstfilea db 'FindFirstFileA',0 ; DATA XREF: DllMain(x,x,x)+8Ao
.rdata:100290D3 db 0
.rdata:100290D4 db 0 u
.rdata:100290D5 db 0
.rdata:100290D6 db 0
.rdata:100290D7 db 0
.rdata:100290D8 ; char aCreateprocessa[]
.rdata:100290D8 aCreateprocessa db 'CreateProcessA',0 ; DATA XREF: DllMain(x,x,x)+76o
.rdata:100290D8 ; DllMain(x,x,x)+B2o
.rdata:100290E7 db 0
.rdata:100290E8 db 0
.rdata:100290E9 db 0
.rdata:100290EA db 0
.rdata:100290EB db 0
.rdata:100290EC ; char aTerminateproce[]
.rdata:100290EC aTerminateproce db 'TerminateProcess',0 ; DATA XREF: DllMain(x,x,x)+62o
.rdata:100290FD align 10h
.rdata:10029100 ; char aKernel32_dll[]
.rdata:10029100 aKernel32_dll db '\kernel32.dll',0 ; DATA XREF: DllMain(x,x,x)+4Eo
.rdata:1002910E align 10h
.rdata:10029110 ; char Text[]
.rdata:10029110 Text db '修复成功',0 ; DATA XREF: sub_10001220+1FAo
.rdata:10029119 align 4
.rdata:1002911C ; char aJ[]
.rdata:1002911C aJ db '成功',0 ; DATA XREF: sub_10001220+1F5o
.rdata:10029121 align 4
.rdata:10029124 ; char Caption[]
.rdata:10029124 Caption db '请确认',0 ; DATA XREF: sub_10001220+1BFo
.rdata:1002912B align 4
.rdata:1002912C ; char aInlineHook[]
.rdata:1002912C aInlineHook db '已被Inline Hook,是? ; DATA XREF: sub_10001220+1A4o
哦,原来只是检测这几个API呀,看来作者认为其它的API都无关紧要咯…… +}H[ CgI:9
不知作者有没有听说过灰鸽子这种东西,它可没有挂FindFirstFile/NextFile,而是挂了NtQueryDirectoryFile,这时该怎么办呢…… (5x[4'
同样地,也没有检测CreateProcessW,看来作者也不知道A系列API只是转换了一下编码就直接呼叫W系列了。
于是突破的方法也就很简单了,只要挂钩W系列的API,或者Ntdll导出的API,或者使用驱动挂钩内核API都可绕过此AntiInlineHook。
x~}ACCx;D$
至于为啥不能检测IceSword的Inline Hook,此时也已很清楚了,此程序只能检测Ring3下的Hook。m
号称超强的AntiInlineHook,也不过如此。而这也是反病毒木马专家对Inline Hook的唯一防范措施,可见此程序毫无强度可言。
[ 本帖最后由 没注册 于 2007-7-7 18:07 编辑 ] |