返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,' n; r/ b: }4 A3 K  G! [$ ]$ v

7 n* s# R2 E7 E. F$ x特拿来分享给大家。
0 q- W) A. v1 P8 u8 X) X2 E" J8 q3 j& n5 Q' h9 m+ W' Q* A- l0 U
今天我们不提我们国产的那些杀软,真的垃圾的要死,; a0 }1 M( V6 V( V; c$ q

% ?0 y  f5 i4 l4 y! v) H上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表( W  K! S( W- U7 c
, @+ W/ G# S+ }8 {
我简单的重建了输入表就把瑞星搞定了,8 Z" i5 _9 m9 k0 R. J
6 Y* v) X$ F" m6 G5 q' X
失去信心了。我曰
1 u4 ^) S, v# t' e$ [# J, G; F* o1 x
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。2 o, u% i; E% f  P
) W) E: V4 j& o) J5 w+ V  O
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。1 J: E( |6 h, A, v! p/ H; Q( S1 x: S

% h' B- X/ T4 g外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。6 R. v& }8 k2 ~/ r3 F6 j( r; n8 a

% H0 D9 f. S+ _( z: @* w高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
( H, A. I& N* p0 Z, _1 v3 o
9 R6 z8 v6 S/ P1 Z. E( b! V5 W过了以后再调到最高,再做免杀。
) F0 J7 I1 G6 D# o' J4 _3 B: E: p: S2 w5 e  C- r' r0 \
以上是废话,
. z2 R+ k. Z0 x, f' h+ [$ Q' ]2 d( T" g- k4 N
好了,下面我们来说下常见的免杀输入表方法。
" z( z# x9 Q' z6 f. j2 i( E6 S/ U9 Z- R/ v- j
一。移位法
$ I: Z2 f4 m. @. E
2 o& W% ?( O: V$ q5 W; h这个已经过时了,我们的国产杀软及时的跟上了时代,7 w$ A  S+ r9 H

/ D$ Q+ Y# y. O9 m6 [8 p+ w移位法在去年过金山和瑞星,还有江民都是可以过的,1 {) |8 {0 _4 a2 t5 d

& n  w/ V+ _4 }' T6 x: |现在的杀软智能化了,移位么?呵呵 ,追杀你。0 E' `4 y* X4 {0 \6 s

( }' Z6 D5 X1 d& d; E如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
; |" M+ L0 l2 O; R, }" |) E4 e3 Y( L
4 R: w* V" f! ~, b5 g/ q/ D6 [二,重建输入表4 X$ a; B  T+ o' K

6 z  O; L! \  E% k, U3 ~效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
( n" r0 e4 `3 w- x( h6 W; ~: [' o3 x: a) n- k
这里我介绍下,+ q1 q/ F9 A; ~1 j% L
2 S6 R" k5 n  e$ P7 n; W
用到工具:7 ?4 v) G2 u6 Q; W
importrec1.6
* v2 V2 J; _0 M4 i" l$ Kod
$ q7 Y- V' e/ G4 s4 @c32asm+ M5 u% p: C, ?- y& g
loaderpe
; x2 N+ l4 {# l% h1 l# q这里我们简单的介绍下,如何重建输入表6 [+ V2 g2 a* M

; U- Y+ V5 h9 z首先吧文件拖入od,打开inportrec1.6  D9 ]/ t2 |2 T5 ~0 [8 R, i- U

+ j; m1 ~' W3 K$ r5 y  G, X如图 选择拖入od的程序,
+ w/ v: j1 U8 V2 ~( G7 A
4 j5 ?1 l5 Z+ Y  D2 [0 K4 o  M8 p; \1 w# a
这个时候,我们打开loaderpe,2 h0 |1 d2 y# K5 G# V* _7 A

; |' e: E$ U# w' R- n9 _2 s8 l. p/ L拖入我们的木马
/ U8 G6 d. c* f3 s9 c0 N8 ^  z7 F" z$ q
选择目录,$ C3 x5 k3 q6 J% y5 Z# K+ T2 s
: |0 i6 q. n+ J* I' q
我们看到导入表这里。。。
8 g. P4 {. j& k, i$ M% m- L2 U* Q8 a# }
如图:
5 M6 F7 ~( g5 x; Z& q
" W& R. l9 v5 q4 U2 X. ~* j2 ?' {! w1 X2 M
RVA地址是0001D000  大小是0000154C
  v. i4 T2 p2 S6 \( x4 ~( O5 s$ ?% V2 d# ]1 M) ]' s5 \. F( Q
好的,我们把这两个输入到import1.6里去
, k4 a5 o/ E) I+ Y/ n4 c
9 j% E# @# _. N就是在“加载树文件”那上面一点 ) \9 k1 T' ?7 ~

5 r: P' Y/ \5 H( _8 t输入RVA的地址和大小。
, \, k* R5 I) i: u7 Y7 M) b6 L* x4 o, H7 k. E+ i' B  ^* M2 I5 r% Z
点击“获得输入表”
% y- \- C) C' V" u. Q8 g+ t
. `# s4 B. }; M( N; y" e然后点击“显示无效的”
0 a1 C0 S- H. w  z) ], e
" S5 _1 l; q& O3 z! g接着importrec会自动列出
6 a+ F6 `( o* h6 E1 @) Q
& @/ f1 d1 b  L8 n% I5 y我们把深蓝色的字体  右键   剪切无效的指针7 T2 P9 R1 v+ o  m

9 H- e4 D+ E1 ~: \7 d( M2 P4 t/ g
$ w) J$ Q: [1 {0 U% h4 {- I最后,我们点“修理dump”! @) M- c7 o% O2 V, O0 O( c' S" H

# b1 U' z+ M( U8 u5 L选中我们的木马就可以了
9 I1 t& D! d# F  Z
9 R9 L4 n4 a% F! B' }; o: H$ L0 e4 ]2 C最后我们要用到c32asm
3 ?- z5 H- ~( R/ |9 }' c, V  |) A, l% r' ?5 R3 h4 V
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。* F% |' F. _5 W) _1 f. [+ _3 U9 c

( M6 D* e0 J7 `7 }2 k$ A- x这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
- M; V. {6 T7 H3 B
3 H% j. S" Y- F1 |( W" l& e这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,9 D& z  s: W& I- ~

9 Q  ]) h& o% t& K: e我们把马子拖入od的以后,打开了importrec1.66 T- u' j- f2 @  h
9 Q4 U$ M) k5 R- i$ E0 |# D& K
在选项那里,选择根据序数建造输入表和创建新的IAT# B- P; z+ V, K
  ^. p, R) \& c9 B
如图
, o+ ]/ f- L  k
+ Y& N; U/ ^' G5 G! [  E' r& r3 r% ?! I& c6 W  h/ H  g7 y* G
以后的步骤照上面的方法继续就可以了/ D% T. T# c6 U8 K* K/ M

- c2 ?, H5 |$ r不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了; j5 i! H4 X. p3 f
8 i/ Q* C# C& J: M! F7 @+ Y" Z, w
因为kernel32.dll的大小不一样。
3 Y9 {0 z' P( Q1 a- ~- K2 K; M; [7 _3 e
3.修改originalfirstthunk% r  H4 g; i$ R+ n5 m

% F7 R6 l* _7 V9 G$ q% O如图所示
5 U3 n; B2 g4 t9 O1 _3 l! S# e& z6 U8 t. i) w6 z$ D& ^/ w4 \: R

" q* y, ^- v6 _3 o. i, a我们打开loaderpe,依次点  目录--导入表(后面那个横线)
) C1 Y$ G7 ^; a- N% |9 r  B: w5 g6 {
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll$ D: M2 R- d# E9 o, Z3 I( ]6 M
+ N2 A* s6 n/ h7 o4 Y: a* i3 Q
我们右键--编辑--把函数后两个00修改为FF
% M) M  p/ M6 B2 ], ^; B! f& I; S6 v3 E3 ?( |- @& b" [  V! L
这样可以过小红伞查杀。  虽然会出现错误提示+ u6 I0 x- s' x  N8 d

1 u  ^& m: \5 T8 I' ^- g' h7 d但是不影响木马的功能,不影响上线。0 Q4 ^  ~" t' v
# T1 a3 Y8 O# r" c" X! h
4.dll后面加20 90法过卡巴查杀$ ^6 B: x3 d) a$ u0 \# l$ Z1 f

& {: B* _" n* E7 W/ {' P' x需要的只是一个c32asm而已,非常简单但却非常有效4 e  j6 I5 [  W2 W
/ n' v/ q) ]2 {# C3 E1 Z
如图: X2 \- [$ _( M" l5 j+ s
: P0 N0 ^7 T. R4 `& c0 d
- d8 U: m1 d  F+ K/ j( a
& d. @0 u$ Z* L4 q) c- m- @( q6 p
我们可以看到,
2 J' `6 x4 @  j/ g4 Z6 C
6 J# a" s$ \- W, I9 M& O/ v& s在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 908 z1 a6 S$ V/ q* {1 T; G

) i9 m2 ]2 z4 ]* x这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection: M. V" B; P2 N/ c, p8 @! x: B
# R% o, p8 ]& J% j, @. F
我们只需要在他的所属dll后面加个20 90就可以了  v* k; K: |4 N! l, R5 i
9 N3 S9 ~- t6 a1 `4 X1 n) E
卡巴目前还不查杀此免杀方法
4 T# w' R6 A" x8 ~6 O
. i. e, v) F3 ]6 U$ e9 ]% k& f6 B9 p- T; y9 V0 D/ }
唧唧歪歪这么多,打字有点累了. d, w7 f- G1 z; Q- y: Q

" ^8 x7 m$ k: X6 \, ~' C以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。5 J. M( u& f% H4 b: z- |8 ]

4 k; j2 N1 q5 W* M6 w# G[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表