返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
5 F' x3 O8 H$ a: Y/ f* j7 I% _+ B5 ?) ^8 O7 }
特拿来分享给大家。* l; J+ z7 ]" f# l
- a0 A# \0 y9 B! X, }
今天我们不提我们国产的那些杀软,真的垃圾的要死,. f$ q: h6 w0 q  B0 M
( {3 Q: l# s+ o  D& l
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
* b) C" S1 g" G& i0 o- D9 i2 @' U/ \9 f: c) S4 K
我简单的重建了输入表就把瑞星搞定了,
" ]$ x4 f8 I; X7 |, i3 w2 Y& J3 m! Y
失去信心了。我曰( J# o  j% F7 u/ V& d( n' W

' ~* n" y- g7 W5 }" }8 G今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。6 w. c7 h/ [6 T/ m. o0 J/ N

* o; L, [& l; P首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。- {* w. v1 c$ \! w
3 m: c1 m6 ~$ R1 F
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
. P6 Z; N$ H  p5 c3 e7 N' C) w; o# [- V/ l- Q1 ]& V
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低( h6 ?; A$ S* p2 a
- E/ i. P. g6 p! |6 y% S, j) \+ r
过了以后再调到最高,再做免杀。1 ?9 y5 {1 e$ j0 G$ e1 ]
# n8 Y9 f0 e7 q' h) s! ]/ N
以上是废话,
, {1 h) _6 ^% Y2 _
3 v9 ?" s: p$ O7 ]好了,下面我们来说下常见的免杀输入表方法。
' w  a  r6 O! p8 G' v; q  }% s  e% m) \! D- X
一。移位法
8 F7 k8 R8 P" u2 ^
% M+ h3 ~) @+ m9 K4 @这个已经过时了,我们的国产杀软及时的跟上了时代,' X! R: a5 Y" O7 o1 U0 _2 N

# [( o7 L, |4 d' N1 j8 m3 A  Z移位法在去年过金山和瑞星,还有江民都是可以过的,$ k+ u! F- w) H! O
$ ?; l  v+ ]8 |3 N' B1 \& }; ?
现在的杀软智能化了,移位么?呵呵 ,追杀你。
' ~; I0 I, \; I" @9 ~8 @: y* v
: ~/ Q( B8 X& G如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。9 j0 b" P% A  R; }% Y/ q* W

* }% r+ [4 Q9 h$ g# X二,重建输入表, [# R( Y$ p1 Q  X7 T1 @

: W8 i  G6 e: h" C& v效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
- l, L- T7 j! V0 R, m
* D6 x$ O5 ?# y' l1 |" f这里我介绍下,
" A! c2 \6 _: }" g7 `1 N9 w( \2 X& d* H6 Q( W$ W
用到工具:
' N9 e# e4 C6 fimportrec1.6
0 K! c1 I/ i# r: k2 q) f" c* Q# Jod$ l! T, d4 [$ P: V% e- Q
c32asm1 Z6 Q9 ]  _9 E4 e3 Z* D3 |, k
loaderpe) {% M" z' V7 `
这里我们简单的介绍下,如何重建输入表4 _+ U: }9 o, O8 C# @8 U

1 [/ e- T" _  H5 K$ A/ H首先吧文件拖入od,打开inportrec1.6
" X2 e6 m; L+ h2 R! F
) N3 R; [4 d" V6 P3 E% S1 \" P如图 选择拖入od的程序,
* q- Y& {5 p4 I; s% s& j0 J+ D2 p6 X8 o( M2 ]# d) r3 t5 m7 s
+ L1 K9 V1 i" T% [. e/ s& E
这个时候,我们打开loaderpe,
, p1 _8 }, @3 t* d7 B1 f1 l# g
) F. e! u1 @; D2 j! K拖入我们的木马
: E. p& X, Y3 ^: q4 h
  e; J) S3 h' t0 \5 T( [4 {选择目录,8 P# x" j0 X% F* v) w

% c- K) }$ j6 U5 l" B% u我们看到导入表这里。。。& Y  y9 {& t: D
* l! r% c7 ^' Y5 t; Y
如图:3 C" ]# R2 p) U1 r0 S
* A! S/ J& n* `" v, v

3 A( m* ]* O+ Z9 s5 o3 N4 o: H4 |RVA地址是0001D000  大小是0000154C+ ]' b: f. w7 }

5 ?) C$ i9 z) J+ Q' O& l9 E- c& d好的,我们把这两个输入到import1.6里去
4 B2 k+ s0 B. p; Q' i6 u% p. A' y. N4 i" O8 B. Y- h2 x
就是在“加载树文件”那上面一点 * \% }; S! o: T/ Z3 b8 x( B

  G  ?1 A( C; |, Y0 ?2 Q输入RVA的地址和大小。
" T- a- f& A( G4 s
1 d6 Y6 {5 k( [9 ^9 }& {点击“获得输入表”
+ v, ]/ a* z4 }& D  T% G/ M' x$ ^, g: x
然后点击“显示无效的”, B4 s, @4 I- ?: m0 ?

/ b, }+ M7 r% h; ?5 H; D接着importrec会自动列出1 Q# [/ |1 c3 R. I4 g

+ Q" J$ \2 }  {2 I/ v我们把深蓝色的字体  右键   剪切无效的指针/ s: c0 c) J" S1 O! D! y* o
" g. s9 f+ a- `" x4 h$ ]
9 @- k$ N: l/ y" x) g7 ?
最后,我们点“修理dump”
0 N5 f0 Y8 h2 Z, X3 T) }4 i" ^" }
1 D" K4 }% M9 x5 Y1 R选中我们的木马就可以了  G, l! s* z, o# J+ m7 s

; h) u5 L( B+ {: ?& I最后我们要用到c32asm
) s4 Z* ?9 X9 K2 q
+ q- ^4 j5 Z- p$ N6 K+ v3 i, F我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
( C* `2 C1 j# h9 P/ f8 X0 v* Q2 F: ?
" P0 D7 r) _1 y: C4 L这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
) E$ M  I9 a6 `: N8 B, z6 O, r% u9 M! D
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,; U3 K- F$ E' g

5 j/ t2 d+ r: @5 u) ?我们把马子拖入od的以后,打开了importrec1.6
  ]. Z' {1 b5 d+ M- X. Y
' ]6 x' u% \1 n3 s8 @$ }' u% z在选项那里,选择根据序数建造输入表和创建新的IAT3 b' L3 S$ e2 T; r1 G- t

+ c* L/ g% v' }7 F  F& V" R( I) Z如图
4 {0 H) K, Z$ g2 F1 f) [9 d' T- B8 J: h2 f
9 j  T/ L" a4 B1 X6 W: Z( t
以后的步骤照上面的方法继续就可以了
; j% ~) k1 d+ Z8 M: U
" A, u; A) a( O" G6 S8 ?1 M4 X不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了3 U! p+ X* J& P! d

; r' b1 X, P" s# A4 N因为kernel32.dll的大小不一样。
& D" K! r6 r$ d' {& I. d- B5 y+ E$ J+ G, Y, S& A
3.修改originalfirstthunk
0 f2 i! L' y' X) @/ `! D
) _9 o1 K6 L$ t! y4 }8 x4 [如图所示
9 x( M3 t* D0 |6 B& k* j/ V& D
; {! n8 q! ]; v5 |% _7 f8 G0 i8 ^* d5 b: F$ o) Q: p8 v2 `2 E
我们打开loaderpe,依次点  目录--导入表(后面那个横线). k* i9 f9 G6 ^" R- _9 c( |8 ^

6 F; b9 u( S( x8 r: J: o7 F7 g" F我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
4 T6 q7 T# v6 A4 M5 A8 }, a8 W% O1 ]3 W! H6 y
我们右键--编辑--把函数后两个00修改为FF
. v; U5 t! a9 w7 c, B$ c
6 V2 I/ y9 M+ D% o, M  [1 Y这样可以过小红伞查杀。  虽然会出现错误提示
' j4 S' {* c" M0 I
* c  \# T) `$ d1 ~6 B但是不影响木马的功能,不影响上线。
1 X5 x2 A: h; P7 r+ ?) A$ {2 G/ u* j4 h% Y
0 C8 z4 W' J  d! B$ q1 [4.dll后面加20 90法过卡巴查杀; W6 b, w- p) G4 R/ M
9 S8 d+ ]% }, u+ }1 s, I7 ]. a9 |
需要的只是一个c32asm而已,非常简单但却非常有效" Z  f% r! R5 t7 p- Q3 C
, }) _2 F4 q! w) Q. w6 b9 P6 h# f
如图: X- ?" \% |6 `; B( D
+ O4 }$ ?: ?; B
: q7 k, g8 M% l

6 Q: A  C! J( h& r# C我们可以看到,
0 J. L! B/ F% f3 g' e& @! @" x- y) M* d4 ], z3 X1 ^+ @
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90/ W$ Y& R9 ?# t) q
: D6 C9 Z4 r* k+ o5 W
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection9 j. W! y6 m- i: V( B
# v$ J5 l7 U* Z2 P8 k$ m6 T
我们只需要在他的所属dll后面加个20 90就可以了
& F' x# n+ i; s
, s! W- |7 o  h* N/ r: b9 b. y卡巴目前还不查杀此免杀方法3 m, |7 o) Q3 a. K7 M+ E

8 \7 r# C, j4 M: Z+ U- q! o" C
# Z. n. j% i, A  j唧唧歪歪这么多,打字有点累了$ X7 G) ?( v, \! Z

  r5 E, F' p9 q, ?3 z以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
. F* b. ]: l: g/ u+ q0 Q7 W
" S1 a* S% Y" t# P- u[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表