返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
+ L& [9 M& ?; {, ]4 ^
) s8 L" q6 a4 a' `) a% [特拿来分享给大家。
+ V# S, G$ A  c
. p$ a" E% \- i' S: w今天我们不提我们国产的那些杀软,真的垃圾的要死,# C' `) p, r4 U8 |

9 _( M) Y" X6 B( j" S/ t上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表$ o, ]" t; }& j  C: F
/ f8 K, d% M2 Y2 f: N2 E6 \8 @
我简单的重建了输入表就把瑞星搞定了,1 u& m! q, y( B, F: T5 B/ e" S9 p
1 I0 B' M% F3 Q& l; j" |9 S
失去信心了。我曰
; f7 t6 f# w: x7 g% ~/ I, U$ q6 C
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
3 [8 n" H* V2 y9 m( T& M6 C, F
5 `/ N- t" A6 Z$ Q( Y- A' q* q% v首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
* y( r- Y! E! {* M- _0 r
8 W' _7 e) c* X& ?1 u' e外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。+ F4 j' a' M/ t
. s5 T9 Y- G5 w
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低6 _7 s& |: u9 C/ J+ C
1 P( X, w3 g! _- D( E* C9 {; a8 O) K
过了以后再调到最高,再做免杀。
( U; n8 d1 d( {1 ~, B& W7 t; j, r9 u- h. a- a
以上是废话,( U% E2 W0 q7 j# J; K5 l' Q+ z
3 w# Q8 j) C; x9 k
好了,下面我们来说下常见的免杀输入表方法。
* v4 v+ S* j% I" Z
  A  K# x) a+ C2 q* |一。移位法
% b. p" _* {/ f. w5 G1 i! F  p4 e- n  T8 w& y$ {
这个已经过时了,我们的国产杀软及时的跟上了时代,: w/ G) i$ d" Z) V( E7 f! y4 x( c
& G+ B# M! y9 K, _
移位法在去年过金山和瑞星,还有江民都是可以过的,
- B- h3 a$ R6 V5 H' ^' j* u  ~7 `2 }% S
现在的杀软智能化了,移位么?呵呵 ,追杀你。9 O# d: ^# `5 @& L" w
% J2 o6 i, ~0 X- Y: i( Y
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
4 u) H, `% B$ |# A4 [
7 _2 }1 U6 H9 O二,重建输入表. d9 F+ ~7 V& P) L" @6 t- e% y

3 Q9 s- }# @8 l# Q. O, j) N效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
: W: D/ j8 U" L6 C( y0 n0 [
# G5 _8 \" I' [2 v. a$ `3 C4 X这里我介绍下,
: t5 ~& X8 S1 G: r2 L. q0 \+ _7 `" p. F, b- X7 o
用到工具:; L& C8 D' L7 X/ U5 m* T5 O
importrec1.66 w7 Y& N& P) f; b
od  L* W0 r3 E) O4 V# b5 ~
c32asm4 ~9 c+ d. O' J
loaderpe
9 ?* N: y! Z  r+ Z: }2 y' T这里我们简单的介绍下,如何重建输入表
' E, l( ?" t$ u) I$ m: @
$ {3 [6 _2 L, W7 Y( E* W: [首先吧文件拖入od,打开inportrec1.68 J2 ?; b( R- S0 b) m+ K

& \( D$ V+ ^2 s6 j如图 选择拖入od的程序,
1 P3 B2 u# \/ ^. [6 i8 L, E/ X9 ^: Z5 Q+ y, \4 \  o! h- B" k
( o, G, n1 \$ g  Y: _. v+ g! W
这个时候,我们打开loaderpe,4 i% J/ O( J4 s6 Q5 ~) I
! U& V: h* f* j. K! N# G% t  x2 h3 g
拖入我们的木马- e7 s! p! s4 J; K  ^" b: f8 C

6 P4 T$ h8 c' l选择目录,9 w8 u9 R% j2 m# `5 t
  M$ W$ L9 N' V5 n- |
我们看到导入表这里。。。
9 t: J! S- @5 t+ i$ P: a5 H+ C9 N6 G3 J! o$ y& d
如图:& G6 \6 t$ H7 ?- v; Q. i  b
8 A" T# X) f$ S4 T4 T

/ n0 I  _: @; iRVA地址是0001D000  大小是0000154C
0 L9 e/ j) q; V2 J" @' ~% L- _$ ]9 R/ p; E$ g! S; ~. |
好的,我们把这两个输入到import1.6里去
6 ]3 K# D! A* v; r
* r% w4 X5 P; d; F8 s/ d1 C就是在“加载树文件”那上面一点 4 \3 m+ E3 K+ Y  M- q+ L: Z0 r5 r

  c6 F& n. y. m) H' s输入RVA的地址和大小。$ I$ m: ], S4 d7 w5 G

! S% Q& Q0 Z: m: v: x, l点击“获得输入表”
1 U1 Y$ v. @1 |3 @& G- c) p+ y
& M4 I* A; \0 {0 V" A% e2 _然后点击“显示无效的”7 I3 ~. n" d7 ?6 o" ]% F# O5 ~
' p1 G/ t: \5 |6 R& T& n, u" e0 X7 T! J
接着importrec会自动列出
  W+ }4 w' a7 F) p
' N" M7 f* |/ c1 u我们把深蓝色的字体  右键   剪切无效的指针
$ z. |% L9 M" x7 d7 t/ h, H, ?! f9 |" a1 F. w

& m/ E1 L3 ~7 F' t) k7 h最后,我们点“修理dump”& L$ q1 J! O# z$ }
) J% ~4 L* m5 u7 X3 k. s. }
选中我们的木马就可以了2 A5 F7 `( X3 |9 J0 B! b

1 d0 N" ]! l/ `0 }3 \& Z- J) t最后我们要用到c32asm
# G0 R, q& x) D1 s( y; P/ @' I# s9 W$ D& u- H- R! N- p8 P
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。0 s3 e0 g! v* G# t) }& I! g

( O4 C+ Y. p  r  n这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
7 t% z8 u0 V+ X% R! G$ D6 H2 @+ A+ a5 \/ k3 c/ i
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
, X: |3 v" c& d/ P* Y  Y: K' z3 j9 j
我们把马子拖入od的以后,打开了importrec1.6
1 W  l- U9 ^* `- o0 \2 a$ N2 A  D! j& z1 L8 |
在选项那里,选择根据序数建造输入表和创建新的IAT
/ f  H2 N4 v) I  b8 L2 O" x/ o. T' H% B: o7 z% {+ ^! r" k
如图% O" f- Z* i# ^, T
& l2 j( l1 N% Y* A
% _% a% E0 y" M
以后的步骤照上面的方法继续就可以了
/ F! ^- }1 c2 J- o1 g$ z8 m6 }! u- F% d: _3 ~; M
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了0 V& T4 R* x# g2 K' C8 R

: Q$ h! z- U( W/ D因为kernel32.dll的大小不一样。) v4 ~) j! s5 ]

) F& {% S* m( }  k# v* f3.修改originalfirstthunk
1 D  J5 A, J$ m/ `# [  V: L: L% K2 B2 \: A% u- j/ u/ m
如图所示. v5 `! O* o5 X. c7 r9 ]( u
+ y; h+ a6 C  F* p9 D1 ?3 K, V

9 _  n7 X' g* l3 _4 ~我们打开loaderpe,依次点  目录--导入表(后面那个横线)
" D3 u" C, S4 s3 H3 G& k& ], A
# B& @% u& x. K+ |7 @' N我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll7 k6 k" _2 a% e% T, q5 X
( n, \" `3 V9 }3 L! f
我们右键--编辑--把函数后两个00修改为FF
. e, @" e; v$ g  n/ U( ~; u  z
! Y$ {* R! v% v& ~这样可以过小红伞查杀。  虽然会出现错误提示
' o. w  C1 Q# F- T. C. ^: d' k3 a1 q6 }* n3 c. _+ J6 E: Y
但是不影响木马的功能,不影响上线。# q4 ]. a' [* U& i" M
3 r) R6 B( d2 m3 k0 Y& A
4.dll后面加20 90法过卡巴查杀
; \2 [4 p* c5 H" z9 q% u9 u; ~# H$ f7 I- V/ b8 z
需要的只是一个c32asm而已,非常简单但却非常有效0 |& K! h- S6 t# `: o# c

! ?9 P& j/ W* g) z' ^' x; V0 W如图* ]# D  u" Y! @* z( \

4 B' Y3 r( a1 @5 E
9 ?/ H% [  N3 U$ z4 y/ X% Q( Y% W6 \; a* ^2 N3 D3 D
我们可以看到,
( W1 ?0 T' L' N# T. X1 v
6 M# O5 A$ g/ G2 j& N# o; N在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90) u3 N3 ?# Z" @; x( n3 E+ ?

( G$ t* ]0 ?' @8 h% Q2 n. b这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection/ X1 I+ o6 l8 A" o* x% E
3 x0 M1 i( |5 j2 M- T4 I
我们只需要在他的所属dll后面加个20 90就可以了, S9 u1 X/ d& ~5 c- Z
" [9 k' N6 K5 I% P- @; |
卡巴目前还不查杀此免杀方法1 j, _& v# h, Q' I: ^
+ Y1 }7 v# K% N0 N  u- Q

; ^; [' Z# ^& y9 d# X; z唧唧歪歪这么多,打字有点累了
6 ^5 ?; j8 |/ E: G
% f5 z8 `! Y2 O4 B3 d以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。4 Y( d5 N' u: }1 m! `1 R2 I1 m
2 ^8 M" v4 _5 H' i
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表