返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,; w2 f  G, u6 C' _" [

, `/ |7 O  [" Q$ Q特拿来分享给大家。+ ?5 n) u$ N6 E

$ r6 P2 c$ r  U7 G' |今天我们不提我们国产的那些杀软,真的垃圾的要死,
8 ?, o+ L9 S/ [0 g
( O% F8 g0 c; ?0 L上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
; F# d0 K; x9 x# k
: _2 l" d! S+ Z5 i1 d. w我简单的重建了输入表就把瑞星搞定了,  l4 v/ N7 ?. G0 G7 K- x$ ~

( ?% c$ {1 Q# M3 U; X失去信心了。我曰2 g, w9 l- Z# {% Q; U) a

/ `" O# h* j" N今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。8 f& u4 R# Z3 R* W5 o& ]2 {

, @1 N! a, ]; C( X* C# L0 D首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。& u) S, R# T! |: Z/ K

6 N. x$ k" j  D" P3 L* j  b2 O外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。2 _$ C+ p- M& a- e
' R# W0 U1 T5 j) f3 f$ o
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
9 `1 q% h5 w. v7 R/ O3 Q/ g/ w' c4 Y* A
过了以后再调到最高,再做免杀。
  l/ U! O) L( \  d4 J9 U) k; v2 J; V3 |
以上是废话,
5 M2 v& r+ o+ Z, W3 e& j3 J0 R. |- ]6 K2 R
好了,下面我们来说下常见的免杀输入表方法。  d( `" [4 f& I+ u2 B- e( i" U: F

! F8 g; J, F8 Q, k一。移位法! z4 I; a* A; P: z* g
5 W* Z3 \! {! R" @
这个已经过时了,我们的国产杀软及时的跟上了时代,! s+ h" \4 G. d
$ F7 ]) ]2 ]/ y4 a# z
移位法在去年过金山和瑞星,还有江民都是可以过的,
5 w0 e; h, Y0 c) u. U: w. p3 D. J/ y, l, l* v
现在的杀软智能化了,移位么?呵呵 ,追杀你。
- H9 w2 ?$ |6 B! r4 F! }% ]( I  ~' _* D( W; ?, m
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。" d1 z4 `7 O0 `: |

: t; |% m# N5 D% U% s二,重建输入表2 q2 g3 L/ g! T
( d8 K. t, _7 G0 ]- q  J' V1 l
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
" q# I* R9 R) u+ q4 \) k" Y) E: o0 ], }6 W- _: z# R
这里我介绍下,( l0 l' w, u/ }+ R' o% k8 W' D
5 F+ `1 m3 x6 H3 \7 P# ~0 w
用到工具:
) h5 R  B3 g7 r  }! a! _3 }importrec1.6
; s4 s" l  L$ P0 `od
# D3 x4 L9 s" B, n; @4 |# yc32asm
& |. J" ~9 [! k8 j4 ?loaderpe
' ^. `( F1 G: D* V6 V* }9 U& B7 [! a这里我们简单的介绍下,如何重建输入表
& k6 c& a# L* n- E: E
) w6 r5 i9 J2 q7 U: v. d, |首先吧文件拖入od,打开inportrec1.6$ }  d$ a" C, g8 U) }+ [4 e
8 d5 Q4 x$ D0 ~* d. @
如图 选择拖入od的程序,7 ]) _0 @  P$ Y0 n" J* q

4 N9 q1 l* V! S7 G& ~
: B- U- ?. g* W7 [$ B这个时候,我们打开loaderpe,
0 P2 ]2 v" A7 N6 @
8 e: z; H8 U( e拖入我们的木马
9 P9 N* s7 o! e' L
5 N* {6 P6 D( i5 o- M2 {3 l" P选择目录,
+ i! U* x( r2 S" d
  j+ u9 M. t, u- i  ?我们看到导入表这里。。。6 m3 h% g; Q" O
/ h0 @* m7 ^8 S) _/ \8 V
如图:: T. j/ x6 s/ r- h* R& l) H
+ d! A! {+ }) L+ V) G) i7 Y  X3 x
: M- r/ I0 M4 u5 X) J
RVA地址是0001D000  大小是0000154C
, @( O" B5 Z& ]( B  y& H  r4 T  C+ i$ c% p
好的,我们把这两个输入到import1.6里去
3 {( J  K5 W! ~, t
/ e3 Z! Z  @9 W就是在“加载树文件”那上面一点 3 ~8 ]. X2 G! f1 A( y

6 @- |( @$ P6 [$ z, O输入RVA的地址和大小。8 E/ N  O' t$ l. f* z8 x/ Q+ z
0 j, l4 [4 J2 ?7 ~- z6 F( B
点击“获得输入表”* r5 ~# R! S9 o" n  A5 V
0 b) @/ [1 X1 a; l2 E) T% R
然后点击“显示无效的”
6 W# W1 M. {& y: [% F' V
& {6 S$ h* P/ W1 q# w$ X( A. Y接着importrec会自动列出# U* h8 S2 B# A- b) f7 r3 j% r

7 s5 S+ }: n! e3 Q$ Q2 `, @我们把深蓝色的字体  右键   剪切无效的指针
- C( a- d4 Q  V8 P1 ]5 x
% v- ^+ z, E2 w7 l0 h5 C# |4 Y5 e& q4 [. B
最后,我们点“修理dump”
) b2 s- I% h8 U  Y
' a) ]' n0 F5 i4 d7 B2 N* O选中我们的木马就可以了
( @5 W" b+ x- a6 h+ y( x+ r; F) G$ c1 ~3 Q4 Z) J2 ?
最后我们要用到c32asm
& [6 Q& @1 A  C8 W7 |3 Q" d! z6 a& _( v0 N; P0 _: I
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。  ~4 t3 }$ R' z2 l& L
5 X* g  G, k( `7 u
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话). @: v% d) C. L6 E* l( u# D

/ A  D- H' [5 I% y' r$ ~& h( Y/ l这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
& N4 v9 z- w' F, x
$ L* g* ]( N1 \8 p我们把马子拖入od的以后,打开了importrec1.6# w& h- N0 x  L, S5 q

9 V8 v  z" s+ X) s  r- }. T% d在选项那里,选择根据序数建造输入表和创建新的IAT
0 M3 o- g6 Y, k: N# O+ t
/ v4 j: j4 G+ b5 `" D; C9 p如图
3 [) u6 B. ~4 K8 \! Y
6 ~4 M9 R: }: W; {# W( j. R) l4 h* V
以后的步骤照上面的方法继续就可以了+ y* T+ g' h/ s1 r1 v" H
' F& G) X  N* v; q5 m  [/ r6 B
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
. ]6 T: U1 O4 B- l/ @) Z
6 y" x& ~9 A& B1 I+ c因为kernel32.dll的大小不一样。
8 d+ Y1 A, X/ x6 A/ R( R' M) f. e/ O+ Q2 y1 j3 a  C
3.修改originalfirstthunk8 ^6 S2 o4 E$ x4 o1 ~
' K$ r3 a: m& h: ]
如图所示
! [$ b7 U8 x: Y7 O
, Q& n) s0 d9 F0 n2 K( |3 C! ?; B4 K) R, a& J/ P$ G
我们打开loaderpe,依次点  目录--导入表(后面那个横线)  C2 M* F& k6 G+ f- G* o3 d1 p% d

& g% T5 ?1 D7 d* V# l0 I% g, e0 L我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
. ~9 `( D2 b7 ]: |1 T" e; Y" {6 d- l+ }% K5 o: w
我们右键--编辑--把函数后两个00修改为FF
. N6 N& W( P# p" s
' h# z! }+ F' G) P这样可以过小红伞查杀。  虽然会出现错误提示. Y0 h- j1 O" K
6 i7 D7 J9 H! a
但是不影响木马的功能,不影响上线。
8 E3 ~) c1 q$ ^0 ?  Q6 O( C: U, X/ }9 Y& a, [: r! O
4.dll后面加20 90法过卡巴查杀- m! X5 Y9 n8 i0 o* u% H

& J; [: j2 m* Q: r5 F需要的只是一个c32asm而已,非常简单但却非常有效8 i; c2 j/ |& u4 j- v5 Y

2 D2 W6 Z9 W& F0 O: Z- x& g* D如图
) P! b' n$ {0 ?# w
6 }: X) I! g/ d- P' O% `
) ?0 H& l) a3 q6 g
6 e2 W/ B  n% E  [" k8 f# l5 S  W我们可以看到,
( a1 \6 w, Z3 }# X1 C  X; K/ d7 ^. Q
1 N# N) g* K+ \2 G在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90( c+ W& ^; v8 p& w' U

2 Z' T! v/ ]  `: I这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
0 D& _0 p. ^: g* M1 T
3 W. b4 r8 ?; s/ g/ ^8 @9 p# e" o我们只需要在他的所属dll后面加个20 90就可以了
6 P7 i* j4 \/ U
6 S: j+ {( e4 \( v% D" F; a卡巴目前还不查杀此免杀方法0 M. C1 q' N% f! T

$ z& M! C) @  ?. T9 d6 a+ q; W9 a1 i- y9 l) q; X
唧唧歪歪这么多,打字有点累了
7 s* E3 @5 f7 m$ S% T& X
1 A4 P8 y" D$ d2 q$ P以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
/ ], l0 q1 u' h" z, Q) Y) |( Z! _2 C6 o% y3 \0 y9 B
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表