返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
2 s) m* ^, d3 O( |6 b# _4 F4 B+ J* Z! g5 u& W, F5 \/ _6 e
特拿来分享给大家。& I9 o1 j9 e$ u: I. c( p6 I( \. A

$ A. T. X+ x! p! V8 W' |6 y今天我们不提我们国产的那些杀软,真的垃圾的要死,/ \1 @9 S4 y1 ^" _/ W1 C. B7 h, t

: I2 `5 a; _. A: @5 U% G" O上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表/ r( Z7 B4 q  g, j! q6 @
) J! e, x% I  v7 ^
我简单的重建了输入表就把瑞星搞定了,8 E) H' D  |. f. |5 C# m. q
0 {3 R6 u* K2 X$ W/ R) f9 S9 u
失去信心了。我曰
* n. P! m( H: V. S" S9 Q
, R: f/ {. I) @今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。8 w; n4 d% I; i- a
+ k/ T# m: B' g: T8 \
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。0 `, z9 V7 l) }, b4 ^9 s2 [

) E, g9 L$ j# d4 q7 f0 n+ h外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。' u3 m' U; G# d% s
* S, \5 `' p' t9 [7 [* }7 X
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低6 w4 k: I- t' s( R: p7 G  v* z8 K6 z
5 Y# x+ ]( Z0 e4 p  `
过了以后再调到最高,再做免杀。' O- `( a" ~  k4 O7 f

8 j1 P3 o/ x. l8 W; f. r以上是废话,% p2 v' f$ i) q
& Z7 O3 l9 F4 x  I$ W" u. \
好了,下面我们来说下常见的免杀输入表方法。
; A! v1 R' z6 G" W8 x2 B8 s: n; I$ K' O" ?& |# I: Z4 R/ D; ~
一。移位法
& u- b# @) @$ s: ], n8 @+ P& `, e4 G, x3 G% Q  d0 @
这个已经过时了,我们的国产杀软及时的跟上了时代,$ X3 e. V; Y" k5 q( D/ Y( c
  _5 _8 E  b7 K" \  D
移位法在去年过金山和瑞星,还有江民都是可以过的,; c1 p. l. f8 d
1 k7 n  U. `0 ?5 X. T, Z1 s; o
现在的杀软智能化了,移位么?呵呵 ,追杀你。
1 p' l6 _5 J! U3 y# u1 Q
& o5 }; t: G$ F如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。( w, v, }/ o# y  C( D" b0 @9 }

3 Z$ ?* ?; }" K) p5 w二,重建输入表& ]" u8 l1 z3 h% t' ]5 P

6 y8 u1 q% N1 y% J; x5 j6 y+ \效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
) D& {$ Q2 N4 X4 M* y6 r
% v; U8 F$ P- N% @这里我介绍下,
* Q* T. J& B& d6 p1 T$ g: `
7 V+ m  N/ ]% o0 E! L用到工具:
0 d& j, o2 C9 \" ]importrec1.6
0 G& A% j8 t$ A0 B% R( n, ]3 b8 kod( P  E+ K0 F  p
c32asm4 R6 j( W' a/ E5 Q/ \
loaderpe
4 _/ I) v. l5 B这里我们简单的介绍下,如何重建输入表
& \" i( }! R* e" B8 T9 \4 K
) {" |- k7 F# _& e首先吧文件拖入od,打开inportrec1.6( ^( A, ^9 f, o0 D& J

. J. P3 A# \( s如图 选择拖入od的程序," I5 w( `" n3 Q/ e
+ J) k: T1 A0 G" T% U6 u9 B0 ]" u
) V, [$ T. X$ k' J+ [' z/ U/ c3 D
这个时候,我们打开loaderpe,
& e. S' |% \9 @  _6 m1 m0 R4 x+ D: p4 Y0 N1 \5 w
拖入我们的木马
- x: i* y: F6 u2 P" V- I
# k% ]" c$ `2 c( Z' u选择目录,
9 Q. A+ w" i5 t0 R" y$ v3 L
9 s& H* I6 U# b, g8 a9 H我们看到导入表这里。。。& B' q0 O& i9 E/ B& `3 S4 O
5 `' n' ?% ?1 v% x7 t9 `
如图:& d) a9 q/ v$ X3 V( m
' G; [" w2 ^3 @6 s

$ i$ Y; g, y0 _3 c! a7 X# ~# nRVA地址是0001D000  大小是0000154C- d5 q. p" }1 ?7 |& @) z0 y% P

1 r# v/ m  e% s/ Y好的,我们把这两个输入到import1.6里去
# @+ S# Q4 R3 D% x4 B, @
1 G* }/ ^6 l2 K; `% T就是在“加载树文件”那上面一点
9 u2 G; M$ ?& X; o2 s" u. h! d& e8 t* g9 x4 ^
输入RVA的地址和大小。
* x+ a. t2 O9 b
, A; r; L/ T: h* I/ H( D. p+ q点击“获得输入表”
: I3 Z, ~# n) `# ?
3 f1 t* _  n# G然后点击“显示无效的”
; r7 z  d) n& ]6 {9 x  d; t' X" Z1 N: i8 q( i' P
接着importrec会自动列出3 e; e, I6 s6 I% A$ q
, C+ h! b; e) _5 R
我们把深蓝色的字体  右键   剪切无效的指针
) d4 o* M2 a( S7 g" R9 C* P9 b5 _) I7 K
# o$ @3 S1 K( C/ p! L# I5 Z
最后,我们点“修理dump”
/ f, L# ]' L$ {, E0 K) y1 `( g3 e# Z- l! C: a/ f
选中我们的木马就可以了) o; J# h" |( c7 D) B+ {. Z0 U

! @8 ?0 Q6 K3 t$ B( _% B9 e6 a% S最后我们要用到c32asm# P0 e  n1 L& \" ]' `4 R7 L: x

" Q3 v( P1 t+ ]5 z& i我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
# G( U! Y6 I7 n2 q4 v) f& e
; S5 Z  v* D0 Q这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
$ A6 Y% |3 j# `! t3 l
4 K( m4 t  R3 x5 q% s/ [这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,! ]7 C+ L! e9 H6 h
7 k5 ~' ^3 L6 C7 h! B& w, L
我们把马子拖入od的以后,打开了importrec1.6
0 n8 B% r7 r/ q" y/ _; [) ]/ E1 m1 o, L; M$ O+ t5 A( I. d
在选项那里,选择根据序数建造输入表和创建新的IAT  y7 h$ }  s2 J/ c* a2 O- b

4 Y! P. |% v/ c8 \& l如图2 T' K4 k( n. ], q6 z: v( b
; a( }8 Z! h5 K2 \( Z2 Z# X

. q8 [, C3 z2 e1 P5 C; B& P以后的步骤照上面的方法继续就可以了
( H+ R- c1 p  N2 w% B  i. B9 g& J. w2 w
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
" }* n2 B- k. g6 t6 f) e$ l4 j! ?6 C
因为kernel32.dll的大小不一样。
+ Q. O2 Z. H$ P. k# X; {- y5 Q, `( F+ H& k
3.修改originalfirstthunk5 v, J1 [) |! {+ L/ r4 J
& V3 X! s& m( ~5 K" K5 N
如图所示8 U! A! ]4 M. H
4 X; F, F# [: l+ `7 d

) {4 o0 V) R2 v( d0 ~1 V我们打开loaderpe,依次点  目录--导入表(后面那个横线)
4 o- k7 U0 O& ?4 Y6 P! J& F4 H% Z- t2 f& h
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
* g& q3 t' W1 A" f% \* i/ F+ }3 }  ~) A. n0 w  ?- ^
我们右键--编辑--把函数后两个00修改为FF
7 ]. k, v; K0 D5 @4 g; X8 j( l: O1 G5 |3 r2 v
这样可以过小红伞查杀。  虽然会出现错误提示  Q' C3 g4 z& Z& W* x+ n* ?- U8 j
8 L2 [. V% U* I
但是不影响木马的功能,不影响上线。! o, I8 A& Y- P. y& V1 Q- P: A) B5 F

$ v) p. R) @- {* d1 A8 D5 }2 Q4.dll后面加20 90法过卡巴查杀1 q+ k6 L8 t  O+ f, P
3 o  @; ^' M/ k5 D# q
需要的只是一个c32asm而已,非常简单但却非常有效
: A" S: F# }0 z
" \- m& f2 F& ?0 n7 b# O1 y" [如图( ?; R) D% |) B7 g
1 m. H- x5 r1 O4 F1 ~
1 c+ Q# O( f" z. @6 \0 A

3 t) \1 s# o. J' Q/ R. A+ M, g我们可以看到,
7 t6 R2 N! q% z9 T3 {8 B4 J/ _8 H/ c' |4 a. c+ @0 c
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 901 I3 w! V6 [1 N1 y: |$ C& O
% l3 ?% u4 ]* o' V6 p
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
5 m8 o- L2 \) B5 e* `* J. E* s7 }( L6 F: F7 o9 h% j' m- j" ^( E; l- n
我们只需要在他的所属dll后面加个20 90就可以了- \# H8 d* }0 F

( W8 p/ V4 n& d; T; r卡巴目前还不查杀此免杀方法
$ C# L1 ~1 j9 B9 V3 R# S
: O# `; ~, w6 q: A5 [- E5 D6 q' X2 J" Q1 v% L2 P* S
唧唧歪歪这么多,打字有点累了
3 e( I6 |1 g+ R3 V6 x0 D$ R4 n
/ e) b$ j9 O" F" q0 q) n! D6 H以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。- u9 w, f  H8 }; J$ [& m
7 _  k2 t% `- p! D* t2 q
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表