返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
  b# n- J" a+ h: d5 c
' {! ]' a9 @- E$ U特拿来分享给大家。: }5 ^/ \5 r3 [/ {
7 x  }& ~7 q, Y: a
今天我们不提我们国产的那些杀软,真的垃圾的要死,
' x9 w6 j$ L( n% o/ Y" N, z
+ g7 j* K0 |6 Q上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
! Z: [: U9 A8 e! Z/ g4 S: S& f" L/ f+ U. g& e  f
我简单的重建了输入表就把瑞星搞定了,4 u- d) k6 ]+ b0 r
/ l% F) \/ C/ |; s2 e& i& z+ n$ _0 \! J
失去信心了。我曰  w' |4 ]- v  ]5 l

3 o3 d* p  z* R3 ~' J. S! t4 O今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。& w8 U# a6 a: N2 p
% P$ S! N3 ^3 f# W
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
0 W5 I1 C% i# C' |- Q  L1 |/ O& i8 o$ X1 j
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
# ?4 i2 i+ J& K( s
* Z) _; f; L3 p0 P# I% |高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低; U- ^. V: G, k( {
, X% N# X) J/ o4 K* v
过了以后再调到最高,再做免杀。
* l8 _! d$ W/ ~  X0 f# _0 M& c3 E) H: f! W: O) p7 U' A# r
以上是废话,
# k9 S/ ^2 p' q9 }9 Z' D( B2 Q% E) Q: o; b: v1 c' N1 M
好了,下面我们来说下常见的免杀输入表方法。
% U' j! L4 F, j! A6 J: Z* l, K  i$ w, y% o4 G3 [
一。移位法, j& T8 A$ k: W: [' m1 n  @

5 }( M* b. n) k2 e这个已经过时了,我们的国产杀软及时的跟上了时代,5 m, o5 p: ~3 q6 a

% e0 f8 x& {! u8 k0 G0 D移位法在去年过金山和瑞星,还有江民都是可以过的,. h  ~: Z' j: O2 U& ^& [5 V

, |6 c( S( P: M. B2 `* H: J- O现在的杀软智能化了,移位么?呵呵 ,追杀你。
) N4 i+ }5 u8 D' P' S% I' V  ~1 y9 u1 Y: Y/ G# b' G& |8 R4 u
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
3 f  w  ~( J9 u! {. u% T$ W2 F+ h- O/ _/ p7 F
二,重建输入表
. M9 s, v$ o4 b7 A0 r
, w0 [) @; {1 r, M$ K  t8 `效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈6 T7 G$ R" d  {
' n7 z' ?  N2 K
这里我介绍下,
2 `" p  Z1 h/ d" q1 F) H! x
# q; t; S7 G: j5 h$ X用到工具:
( K# ]  d0 C) s0 b4 M+ d3 a/ {  `importrec1.6  S& \8 X% o! B! Q; c2 N
od' _# {# K$ x1 s
c32asm6 u) R- |6 f6 i2 |
loaderpe
  K* \' e. q. s; S* ?这里我们简单的介绍下,如何重建输入表- [0 T0 q: s: p" t( I
$ z- \  f% H/ N8 ~4 [) S
首先吧文件拖入od,打开inportrec1.6
- `7 p+ k7 p# ^! y9 I2 F$ E" M! h3 S  K. y& M- V/ d9 U) t( B
如图 选择拖入od的程序,
; }- c+ O* x, f! j, G
( n! u: X! K" O7 ?" c: t6 n
$ h& f: A- W. E这个时候,我们打开loaderpe,
2 Z$ ]6 L! e5 @  G1 ^7 B" P" Q4 i/ Z4 n) `4 X; j
拖入我们的木马
  ]. G+ U% _$ h* {* F+ p! B: W3 b: x  w" X/ i4 V; ~
选择目录,. J; V2 x7 p+ J5 U
3 G: e* W( L6 m* p3 j4 I
我们看到导入表这里。。。
9 ]0 V2 t7 C. H- T+ m& m1 ?# w+ z0 Q$ v" s; E& F' H6 C: }
如图:: B: D$ n) e6 I/ x3 ~+ @1 r
( w) B9 u8 @- ?

9 N8 S$ T8 I0 q: ^+ ?$ l! zRVA地址是0001D000  大小是0000154C' E6 e% ~- Z7 X/ @! j/ D; w% X; {
3 R8 J" K+ ~9 h# ^% p. ^( v
好的,我们把这两个输入到import1.6里去9 Q6 e0 w/ F& }3 h1 l- R3 [

, s* `* z. P+ S1 c/ e就是在“加载树文件”那上面一点
( O: @7 k- ~7 b8 l' C
: j8 \$ P1 x: L' V1 n/ D输入RVA的地址和大小。
" W3 i5 m2 E  w; w. X. v' P5 U* @% B7 t; o! y, E( e8 e. r
点击“获得输入表”0 Z; X+ x) \6 _4 R* S9 Q

/ x/ A& a. m& S- {% n' g; U然后点击“显示无效的”
! G! Z9 R' \) v7 \7 c* i% `8 {& Z# i
. m7 Q; n8 f, X9 K  s0 q  Y接着importrec会自动列出
  X9 a5 ~; a# r, w
9 i% V$ F. y& ]4 R1 s; \9 Y: V8 ~我们把深蓝色的字体  右键   剪切无效的指针# b; U3 C4 r! I7 @4 y& ^% z8 y
4 J- k3 f7 ?) o- P) ~1 x/ N
( [& u3 A; j& g' K5 C# t  ]
最后,我们点“修理dump”6 t) A$ t  q  D5 y' p& ]* W( p

. R7 g% o  t* `4 N. p9 w选中我们的木马就可以了2 Q/ h) Q4 W- k$ G$ E

6 F% K, P6 E) `* |& y, A1 ~; P最后我们要用到c32asm
! i/ M. A1 Q( `( A& Z+ R2 v
4 j8 M- Q% Q0 ~" G# m: r7 d  `我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
7 `! T. v- s; [8 `& T$ W# F  L" o- B6 ?8 e# m. w
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
, n) U, Y- Q) ^1 R1 U
9 L9 q. ]1 O$ K% X这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,$ X' V2 D& S/ n: ~2 ?: h

4 V1 J9 V- q# \; J3 z3 @0 S" W我们把马子拖入od的以后,打开了importrec1.6" S2 z7 `. l+ o3 l9 e4 Q- }

8 O# `+ y, f% i1 ?# u. |6 Q在选项那里,选择根据序数建造输入表和创建新的IAT8 r* m( S% X& y1 l1 ^
5 l1 e5 C+ H9 r
如图- }/ T" Z3 ?/ y8 e! S
, i6 k5 D' z( R& q' V, v3 O8 o
+ }2 `7 n0 [; V- a: B/ \
以后的步骤照上面的方法继续就可以了) `9 M& H$ u1 s4 C3 S- P& `
# n( Q3 T1 N5 B9 R2 z/ F$ d/ Y
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了0 |9 H: Q6 q; r8 Q9 h) a

" \3 _& _- M' A& Y* Y) b" ^' ~5 d& |因为kernel32.dll的大小不一样。
; `( u' v3 @, w& ~- r, v, H, ?; A" ~- x/ z8 n
3.修改originalfirstthunk
, k: ^$ Z' j7 f# Y9 M! U" k/ u# u9 p( E
如图所示
  U9 i5 X+ Y5 j, @% d! N7 k" }
3 z% I/ T" R1 V- A% \, D& L! L7 W
我们打开loaderpe,依次点  目录--导入表(后面那个横线)" P" i! v" W2 |' n. H
7 p/ T2 i4 y( E* y' D& H( p; Y
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
: f) H3 |: P, ?+ T, x: u1 H6 g# N/ o# H  H! a& H: b% {
我们右键--编辑--把函数后两个00修改为FF
; A$ m5 l6 F" o4 D; U+ K( ?9 Q5 u0 O, V& d* l" g! {
这样可以过小红伞查杀。  虽然会出现错误提示
1 L, Q0 R- m* p1 O6 ^3 `4 c. G7 X, P8 x
但是不影响木马的功能,不影响上线。5 ?. i$ j. G# c( @6 @5 @
1 z2 A5 Y+ G  h
4.dll后面加20 90法过卡巴查杀
# |3 j# H9 t) U* d; @8 X/ \4 U
& A' L2 }+ r8 Q+ u! Z* ]/ R$ ~! U需要的只是一个c32asm而已,非常简单但却非常有效
. p; ]7 c8 W& `! }% }
% y- ?  n) f. M9 d如图% m' y! ]* X0 O+ F

2 c: p* y8 [9 V, C1 I6 Q
' _, m: t9 R0 @' F# e2 D5 M
. f+ O, H9 @5 ]. J4 {% @我们可以看到,
% f. Q6 ]  `  K- I* a* s" W
$ Z7 a4 a/ s4 G3 X* Y" l+ @在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90/ i& G9 s1 g/ @1 [

3 D; t5 z$ h* @; h, u这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
; d) x# q! C% `5 W9 b; X! }  [2 w+ x' V2 B. s: d8 W1 r" M+ N
我们只需要在他的所属dll后面加个20 90就可以了/ b! h0 F: C, T0 O6 s1 q

5 y% x9 w& d  t9 x& C卡巴目前还不查杀此免杀方法" e( p1 }3 m: ?! [

# X. B3 u6 a8 z$ i
; C+ G( s, N4 L  s, R! J唧唧歪歪这么多,打字有点累了; t# C. L$ r/ R
: @3 @4 Y2 [, l- a7 a. K
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。& W* U9 h) _+ ^+ W1 P7 }

6 ]6 g& d+ y' |( |  J) f[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表