返回列表 发帖

[原创文章] 木马免杀之免杀输入表篇

最近和一位木马免杀牛人交流,感觉新增进不少,
! k  s+ E. {5 T5 n+ ^2 L: Z
) A" t- g# V0 ^2 {/ _* V* Z9 F特拿来分享给大家。
! o# C. m9 z  S7 ~% J4 U" U# e7 D% `$ \* |
今天我们不提我们国产的那些杀软,真的垃圾的要死,
4 X+ u8 T6 c. K' [  \3 L! ~+ ?
7 z4 C* ^5 a9 v/ a: ~5 R上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
% r$ e  @. C) N- s5 t4 R
$ o( B5 C) Z3 S! L& z5 q, K我简单的重建了输入表就把瑞星搞定了,& j8 m. ^& K  f* C* U2 V3 {9 _
. s# X4 l( ^2 J+ v# ^$ J# B
失去信心了。我曰
8 ]: o2 j5 h% e+ @* ]: [; m4 I- T* r' k/ G# R
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
3 ^9 N4 x, L" _! j0 Q# Q
- I) P$ ]. R  C; X3 E首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。4 L" a3 S8 [' q

; u0 L$ s5 r9 m外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。4 b' h& r% p; x% L

5 p' s7 q# y, H7 ?+ g" w高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低5 C3 M* H  J( _% s; k" m
" @7 b  ^; H" k; V4 L  d
过了以后再调到最高,再做免杀。
' `# X: |' x6 `+ e5 Q8 [4 Y! V0 d& k! g" Y4 `
以上是废话,
$ X8 J! D3 B; T  J6 Y
2 j/ c5 Y2 x; Z% F9 O好了,下面我们来说下常见的免杀输入表方法。+ J0 f0 ^& Z4 G" l, i8 {( o7 b
- g- Q. x* D- t( T: W! l7 x
一。移位法
$ E  M- j% P: P" G) ]
- h6 q/ Y# v- \# ]% C. d; g& j这个已经过时了,我们的国产杀软及时的跟上了时代,
2 T; z2 n/ }. f6 X0 r
. x3 O4 ?' v! A3 o移位法在去年过金山和瑞星,还有江民都是可以过的,; h. G; x0 R4 o

4 r9 C3 v2 Z' w' ^& t现在的杀软智能化了,移位么?呵呵 ,追杀你。/ T* x& _1 c! O. t& a. C
& O- W- f. O# E
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。7 u: ?' g% W9 Q5 X+ O- |
/ ?. ^, }& i6 S
二,重建输入表, j. X& F: c7 j- \. ^
) ^* o3 ?; V: r8 T- h
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈' C, M. H8 x9 `3 E( D
5 Z' B$ e' f- n- s4 T  \$ l( W
这里我介绍下,
+ x( L2 E( p% t. d3 t5 J. @2 ?  |! |- I' f$ G8 q
用到工具:$ E  H% x* `3 l
importrec1.6
1 O& k0 A. b, C/ K6 p! Uod
# x* i# Q8 D5 Z. V/ ]' {( Tc32asm
& U" b4 |9 \5 C( floaderpe& Z# @1 j+ t- Y* C
这里我们简单的介绍下,如何重建输入表
* Z  l! c# f* R; j5 m. }9 u! P
! ^  O  N# t( ?首先吧文件拖入od,打开inportrec1.6) X) `$ @+ d: X- T8 I7 {4 o

3 z) n" s- x9 O" ~如图 选择拖入od的程序,# r$ l" C! M& z  R! G

+ Y5 F! m% K7 O6 G. ]6 L
* t7 d9 T- q/ u; G这个时候,我们打开loaderpe,
  g+ t( C( `( J0 b7 p
9 B' [7 D" e7 I# K" x# a- J拖入我们的木马" |) F9 k# H; ?2 z& _& e

6 ]( r" A% [, b3 F! r选择目录,
. {0 N" I) Y8 C+ j* p6 R1 i
8 ?; z. Z7 B2 \4 D我们看到导入表这里。。。9 p8 C3 N2 G# n- x
2 j* z' K8 R2 Y/ i6 c$ ?
如图:
& L5 s6 K' X, P+ b2 R* ], b3 j1 ?5 v5 K, [3 a% z/ R
. i  C( P9 O! g% T3 r# W
RVA地址是0001D000  大小是0000154C# V4 @9 ]4 p( o# _
( ?7 ?/ M* [9 d2 o. c7 J
好的,我们把这两个输入到import1.6里去
0 `+ u# z+ ~2 z, E5 m# O* a
6 w( n4 U# ~/ b. c8 |1 Q就是在“加载树文件”那上面一点
7 p8 I# _7 B9 ?' C
2 \( d9 W- v# j  P$ }输入RVA的地址和大小。
- N! g4 `4 R6 W8 w: g# e5 ^  h6 L2 e+ H, B
点击“获得输入表”
9 }4 d9 T1 q6 y: Q8 ^
0 k* [& b6 e5 M* Q7 D然后点击“显示无效的”
2 A6 T8 h% v: G' W% b4 B  B1 x# L; H
接着importrec会自动列出
3 d% b' Q9 c( r+ j) b9 \' S5 [; J" a4 ?3 w# g! H' m
我们把深蓝色的字体  右键   剪切无效的指针
" L$ @/ b6 e- G- T  l+ d- [3 W5 h: x$ a1 K- n9 \& T

) `$ E$ v8 m+ G/ x9 w/ }2 o最后,我们点“修理dump”7 T- T4 [3 `! e( c  ?3 ~

) h) g4 c! m  g" b7 S" A0 R选中我们的木马就可以了
/ L+ Y0 k1 ^) Q3 n5 g/ O4 n0 H* a3 T  z, b4 e
最后我们要用到c32asm
6 j" U9 ^7 `, ?- S' c
$ @2 s6 _7 X* g! x4 q& V我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
- @" H/ k5 W8 G; r% y' y
0 M" ^, ?! E3 W0 d& a1 @这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
8 z. G3 B$ O# C2 }0 ~" T/ h/ i0 H- j  v: x- s/ t: k; k- l
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,, w% ^/ x, [6 g7 o, j# l

0 h8 }* l' D" K) ]# S# m我们把马子拖入od的以后,打开了importrec1.6. K* N" Y, a% l  [+ H

$ [* r7 H% \# S  |0 U$ m在选项那里,选择根据序数建造输入表和创建新的IAT
1 @( h1 H! f: W) ?: X% c6 v/ w3 e$ M
如图7 }+ q0 R' D1 d9 C  ?1 M, {

: r. x% q. [% g2 V8 ?$ E* l0 ]4 u3 O: R6 ^; ?# m) L* H  E8 l
以后的步骤照上面的方法继续就可以了
# P1 B$ f$ f/ N% Z* ]" W) F
$ M' x. \! m5 U5 @* N6 |5 l不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
6 a0 e2 s8 u+ g) ?
6 o. B0 x) J% L2 j; e' Q: V因为kernel32.dll的大小不一样。
- n* O7 j' V  ?5 {/ T4 H$ r4 q. _. j0 T0 S
3.修改originalfirstthunk
  c' u% E* s2 n" y" L
# ^; n5 x& B" ]* U如图所示
, p3 L1 p& I4 d! @% h
" j& e, t5 n$ w0 f( P: x# e$ B, O# x* c5 @1 D
我们打开loaderpe,依次点  目录--导入表(后面那个横线)
6 T# w+ J+ f: V0 V  W' I; \
6 q$ B4 p) `# A+ L我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
$ n- E0 W5 l2 ?4 h9 E6 z2 R/ N, f1 ~9 o2 `# r8 D' F7 u# I
我们右键--编辑--把函数后两个00修改为FF
. n* ]" g9 y5 r2 w5 ~0 e& E2 H2 D2 F# E* n2 i$ C0 O
这样可以过小红伞查杀。  虽然会出现错误提示
. ~! Q, j3 Q8 o5 s2 [3 q* A" M
, _# p! K+ d* o但是不影响木马的功能,不影响上线。2 d, {4 k1 B( Q0 m

" ]7 ]  a& j3 S, g( n1 O4.dll后面加20 90法过卡巴查杀$ `: v3 a' C$ d' l7 Q
  |( C/ G! h0 q/ o: d
需要的只是一个c32asm而已,非常简单但却非常有效5 _, ?4 Z+ w- l- m( U

* c  v) K; l  ^1 {, l如图) M3 r6 P6 ~: g! U. Y% i

; R, j( r3 N' T' J2 ~; O5 h& w- U& i5 g) q
2 L% i% s3 m# O% `4 v4 c
我们可以看到,6 o8 f8 _! u' d% ~* U/ o7 p

( z6 |( ]1 j4 A' I, ~在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90+ C! \3 N1 E9 [5 X' E5 o; \

2 l8 L  e& X8 N, u这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
* s. t( U: C1 I$ f1 Q# v3 E/ M! z! t
我们只需要在他的所属dll后面加个20 90就可以了( \, u; _! c" m/ r
$ c) X9 J3 ?2 U# D  j1 t6 E
卡巴目前还不查杀此免杀方法
* s, F9 ?% l- t( A3 r
. `8 M3 e( R- Z4 l
" `5 b! k0 h. J' @" u$ u- E唧唧歪歪这么多,打字有点累了
+ r  C6 r7 m: ?- a. `1 e4 X; x+ M( S1 V) E
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
1 Q# k1 v- l$ M$ r4 ~' a) r
7 N  R% W6 U' y7 C; e3 R) E# f# G[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表