返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
# W6 o5 H  U9 L: l4 n/ D3 p
7 H3 V: i9 b& T8 j+ X( u特拿来分享给大家。
/ p$ l: c6 x7 {% \5 Z- s' `! y
. B" P& {7 |2 w/ ?今天我们不提我们国产的那些杀软,真的垃圾的要死,1 P$ K/ T% T$ f) L

' P4 L! @2 @1 O( T% O' p上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表, W% f; y$ }( I
  ]$ h% P# D  p- E0 K4 J9 j0 M- A. J
我简单的重建了输入表就把瑞星搞定了,& t7 U" F7 ^0 f- g. g

0 r. O  M+ ]: D) d0 Z: \失去信心了。我曰
1 [8 ?5 F3 f0 J+ m# q) d. s( u5 t. U" s
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
3 T. O. A  l4 n7 D7 z# a) A( P) |. p' O; X
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。) `& R7 |  D3 G- l% G8 G
! F; j- T  }" b% C2 k
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
8 p1 y- N/ x- t5 y* c/ Z
+ Q7 `8 I; }5 [% v高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
/ w+ \0 }3 P6 `7 m0 ]+ w  e* S! V  m8 e* X- a1 B
过了以后再调到最高,再做免杀。
; v) ~3 D( x$ E8 A. d0 I
; D( M+ K! O) I- V& G以上是废话,
) ?& E+ r( @, K
) C$ ?1 @8 E% z$ |好了,下面我们来说下常见的免杀输入表方法。
. E0 y# R( I  x5 x, |* t7 F  z) H3 S1 C  z+ T
一。移位法8 @! K2 ?: U: x3 Y8 ^) T0 s7 v
4 q! d: ?- X/ ^/ A
这个已经过时了,我们的国产杀软及时的跟上了时代,6 O, [3 g  }8 H  x; x/ c

9 W8 R: I( z6 E) e  X+ h$ u移位法在去年过金山和瑞星,还有江民都是可以过的,
1 T/ {( U3 r& k9 v1 z1 v& X3 j8 X# w4 J1 ?0 \4 B* W/ [- Q
现在的杀软智能化了,移位么?呵呵 ,追杀你。
% ]9 I5 y1 V; ?* z
2 g: S% K* N: l如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
  s: }& i8 y7 u' s- Y( j/ D# f; P/ u3 c. Q$ |1 @6 w
二,重建输入表8 d/ i) w0 {1 V7 h# F  E

9 U$ T+ b: |: u. K4 _0 n, z+ l效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈3 k& A) d! g" A5 E

+ M; ?: B' e7 p6 ]* B$ ?这里我介绍下,6 z5 b0 r, f& x2 ~0 s

+ t. N' i6 [1 r/ V用到工具:; r: S. W( {5 @7 ~9 C$ P: T5 c
importrec1.6
+ U6 V9 s+ `: W* _od( u# r" o; e  N& f  K1 w
c32asm
7 l3 X4 q/ C: O) ]loaderpe2 x5 E- E8 R- g; e
这里我们简单的介绍下,如何重建输入表! o2 b+ I' p) N! E7 c. x8 R  N

  [2 `3 D  L5 a# N: a. x4 o. Y2 P首先吧文件拖入od,打开inportrec1.6
: _: s. X; S5 W+ Z- B
  h$ G3 d: j' Q9 T) A如图 选择拖入od的程序,
8 E$ T/ M$ a: H$ |. k- Q, e' K. K7 Z# p) t) W+ W& S8 @
; f! \2 o0 w! D
这个时候,我们打开loaderpe,
- N2 R+ A2 [$ j* m" d. l- q( }; Y* Q6 m# x6 V7 ~! t, F2 o: S! G
拖入我们的木马
6 }9 T  m3 K$ |- `: F8 _6 h! I% e  r! N$ D) t( t% |) i5 `
选择目录,( ^8 P; X8 \2 f: @
/ x! v( ^0 [; Q% S' ]. ]* n" M
我们看到导入表这里。。。
6 y; m$ j' y$ n
* q; o4 o1 ~9 }1 K9 x2 U! z2 v如图:6 C4 w0 [, G- e/ |

  r* J* p; T. y3 K! T$ ^% x. S7 K  u/ e; `, O' a3 L
RVA地址是0001D000  大小是0000154C6 p+ s* c% @$ C) M) ~: Y. w$ u

1 r. p" O+ D4 t7 v2 v) S! }好的,我们把这两个输入到import1.6里去5 E7 G, _! X6 ?& \

$ V2 x( W2 b2 S5 t. F6 e/ w就是在“加载树文件”那上面一点
/ q3 N$ }1 ?% h4 {
8 Z! F9 p' n$ W/ g0 Q, Y输入RVA的地址和大小。
% b, `! B) f5 n4 b8 E8 ~7 ^' i. r' u. m( m) a( A' M9 n
点击“获得输入表”
3 K5 F$ V/ w2 F, b8 d3 Y6 A, m5 j4 E# B& A
然后点击“显示无效的”+ L# [8 X% c( ~% Z" K

/ f) V) ]7 W- e5 C9 `3 J# N+ t接着importrec会自动列出
3 Q0 Y9 n- u* T' A5 r
5 f8 ]( X4 P$ Y我们把深蓝色的字体  右键   剪切无效的指针
2 J2 k" Z. W0 g: Q0 l( x" }2 J; O* H- u% ^0 L; Y1 C7 R, a

  a7 c/ c5 ^) q1 }; k最后,我们点“修理dump”! i( u& j3 v/ f) \
" t7 @% D4 W; k; d' K
选中我们的木马就可以了
  O* v8 \# ?9 u, K) d! s
$ r! \. L5 t$ G  k9 @2 I7 X最后我们要用到c32asm; Y0 M9 ]) u. c( Q
$ Z: O6 |7 P3 @1 O( o. R- Q
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
1 j6 C$ _" W( \( A7 R# d" @; F2 z% T7 V8 C% U% t! c1 ~" \: a6 r7 W: ~) \
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
$ u$ ]# S& l0 P5 u4 L0 \
% Z; D5 |  E2 c: o: _- B这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,! ^  m; s: w# }/ |( `6 q- K

3 F0 e9 j! U' Y6 V9 g2 k我们把马子拖入od的以后,打开了importrec1.6$ b- M/ y/ F0 q, d5 a, v: J1 [( ]
  [: X9 L, {& X; }2 L2 T% l
在选项那里,选择根据序数建造输入表和创建新的IAT
% X& {/ F2 U  g3 J9 a$ z! p* d- b+ r: u) R" Q
如图
3 l3 b5 `+ l% _8 ~3 U
* b8 n$ d; t( N" J7 g8 h* [0 k$ e: j/ j& Q, d, j
以后的步骤照上面的方法继续就可以了7 ?7 B; N9 |: a3 O, M( o7 U
* O( I: \8 }" O  i, Y) }
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了+ Q+ f: E5 R$ V
4 w  |* J' e: O1 Q9 x$ }
因为kernel32.dll的大小不一样。
' {  k" e: j; _" L/ O: M9 D1 T. L% _% k6 u, i7 Q, s+ v0 w: X2 C
3.修改originalfirstthunk
) M2 R3 V6 G- s2 o0 }, G) O
! k+ j3 T* q  p! ^) E6 A如图所示+ m- _5 B% Y; c. K$ X4 s! z0 L% Z- ~
5 S2 C6 i6 \4 W( j! p
- g# h* I2 B2 Y5 `8 v# `% [4 Z
我们打开loaderpe,依次点  目录--导入表(后面那个横线)2 u$ H  g7 c4 |0 ~9 A4 p  F
' n0 e' W1 ?2 b* b# x* O$ }
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
% b0 I9 k8 G% u) K5 ~# U8 ~
( ]6 [1 _, t% O  h0 v  }& i" Y我们右键--编辑--把函数后两个00修改为FF2 I# ?& o% X% q( V9 ^2 P* E
- ^8 a; o1 K5 l7 A
这样可以过小红伞查杀。  虽然会出现错误提示) z0 ^2 C* {$ M- w/ r( S: `9 k
( h9 h3 \  h( S% u$ c1 w6 s! G
但是不影响木马的功能,不影响上线。
/ G2 [0 |* u/ m; g% a, I! l8 H8 B# g! h0 d3 ~- v
4.dll后面加20 90法过卡巴查杀
& E# Y6 M" \5 ]7 e3 D! N+ e
/ V$ X; c+ e+ d7 V$ j# n需要的只是一个c32asm而已,非常简单但却非常有效
1 o9 {' G" ?' J  m* t/ Q
8 B  o- ~1 J+ B4 ~0 x7 L如图
7 p0 l( r) D+ o  B! T& ?
7 A9 l( y$ Q$ q( T6 N- x  N/ R* c
! D% {. o. U' f, h0 q% z7 {
" b, L# q( l. \2 Y我们可以看到,9 |" u8 P6 M, e* l7 J  W; R( n' G& s

6 E1 s4 E5 q2 ^+ D在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 905 I  a3 t, I' C1 O: e
& @$ Z) S" W! o! ~4 O
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection2 f- m. ^9 {4 w* \6 B2 G+ R

# k( |  l3 ?. J2 E' z我们只需要在他的所属dll后面加个20 90就可以了5 Q: P$ s  [& l) Z$ \" U

6 q+ u4 L1 c0 N  b- X0 e; E+ Z卡巴目前还不查杀此免杀方法
! F- u8 v; ?: l2 o
. t- C$ R$ W6 W: }# W8 c" d& n9 ?' m! D8 p. N" O1 ^
唧唧歪歪这么多,打字有点累了
: a$ s# Z8 j! A" I- d6 b9 A0 E) g8 L2 a
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。8 S" Y& \2 t- C3 T6 G. p
5 ~, c3 S% B: f/ o4 n% v
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表