返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,) h7 m3 R2 w& B) e' x' @+ b9 }

& q  x8 v; L3 W' ?0 Q# i$ D特拿来分享给大家。' a" o, b0 p9 a4 d8 `, u! G4 h6 g
1 }% m' X( t& w: z2 [, G2 n
今天我们不提我们国产的那些杀软,真的垃圾的要死,* F! l, r% B8 N* V- C( A
; E7 S' r% o, y% L$ N/ T5 S
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表  O& E$ l% E' y, Y1 ]9 O
+ r1 d$ z. k  n& s% ~
我简单的重建了输入表就把瑞星搞定了,
8 c* c1 o- o1 }. D4 K
8 N, H) T% M) g' F7 y( G失去信心了。我曰; n* ^: H$ s$ f( _, F  Y
$ `! q: o  f; _3 x% M
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
1 ^1 n' q- E. P! j& X2 X2 e& \" h) I9 U+ N
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
/ j. }4 S2 G  W% w, o  V2 }* p0 b( z  L2 P+ N3 i' y
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。0 y% k( e0 K4 T: ]

' o$ l1 K, K' f4 c: _3 O高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低4 ~4 L; B% y2 Z9 G9 p' }5 x7 {/ H
3 \5 f4 V- A/ J) f! G9 p+ s; y- q1 m' G
过了以后再调到最高,再做免杀。) D  b) v, s. C. A5 I- G
* D( M. y8 g8 u+ j
以上是废话," t9 C) O' B( W, L

0 o. r' p  [2 A7 T6 y) V好了,下面我们来说下常见的免杀输入表方法。4 h/ h2 I) y' u$ X/ B

1 b! z% K" U# Q# f6 m1 T一。移位法
& u; M3 l: @8 F0 b4 X; }+ o/ ]( e( U
这个已经过时了,我们的国产杀软及时的跟上了时代,  W) |3 n; s+ d$ k  y

! k) H* @$ C: X6 {4 R8 K移位法在去年过金山和瑞星,还有江民都是可以过的,! R5 A; I, p! w7 i7 ]

7 s+ T  \5 k# U; a9 [现在的杀软智能化了,移位么?呵呵 ,追杀你。
( z; ], L8 i; c, K1 e# I: M' K# {( |) x! Z
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
# e7 L# Y9 ~! z* B3 g1 Z; Q* K4 N( o7 b
二,重建输入表% R# i  i' g& F' @( x
7 J3 P! W: _" M4 w- ^( X+ M
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈- G& @6 B$ u0 f* \, T% f- e
* h7 c6 B; B  H9 r8 L% e
这里我介绍下,
. s" w3 v5 I  ~) ?  I7 F
# p& I2 V3 H4 s  `& Y用到工具:& ^8 p9 N  @$ C$ U2 g4 @6 j
importrec1.6  V& V& y' d1 q
od) w0 o3 _1 B. _; I' g
c32asm2 i% w1 k1 b8 g
loaderpe
* E5 F4 ^% i5 k4 V这里我们简单的介绍下,如何重建输入表9 w' s* C: f8 B2 l* b1 Z
. `* B9 Q) B( O. O
首先吧文件拖入od,打开inportrec1.6  K. E  M: G% J, ~  u8 Q9 T

. _1 C, o* _- y" C- s如图 选择拖入od的程序,7 F% _! \+ h. v& ^2 p  H7 U6 g

$ ?. m1 _8 T1 V: z2 u. l. m  I! b" E' K! S& \! q# g
这个时候,我们打开loaderpe,+ x  y7 p  q% H2 c0 u0 i/ Y) F

% w& n6 o% ^4 t" l7 B! C4 I2 _; F拖入我们的木马
4 @9 z' c) M# z% }; V1 |1 V) ^% z" j+ i8 R: F6 G- W; U
选择目录,7 `6 _3 \8 P+ n
% B: Z& D( @, b( w
我们看到导入表这里。。。
2 A- Q% e7 Q4 ?3 b6 a9 l. P- P+ s2 T' v5 H
如图:
  ]* x$ v9 [, f/ d, {8 A- B
, E5 i2 l+ X) K2 P. r$ U. w5 S( [* a' d/ K6 `0 a* m
RVA地址是0001D000  大小是0000154C% C; N$ a' p; c8 J

4 Q: \7 Q' M3 x2 X8 C% S3 c好的,我们把这两个输入到import1.6里去4 h3 T/ C6 I3 @/ O' B/ w

( `6 @* x0 A7 K0 u就是在“加载树文件”那上面一点
' x8 [* S: |8 O# I. O3 @% J4 `- ~* f- c2 {! x# A5 d! `* F
输入RVA的地址和大小。0 t' ?; b2 o0 x' ?
! P9 P, i0 _0 U, t
点击“获得输入表”2 G& k( i9 z1 Z& F6 s6 g) g
: N1 J$ Z4 G' O6 D$ E. o% e
然后点击“显示无效的”
& i' W" E" f3 b2 }9 n3 k4 h3 N2 V: U! Q# Q. ]% b
接着importrec会自动列出
# T+ f2 i5 P2 O$ a. h9 C! i' @7 F  P. T0 ]" o- i7 ]! d
我们把深蓝色的字体  右键   剪切无效的指针; ]* C2 G1 o3 Y/ F
- s& Z' G1 n& h
+ V, @* j$ w' C' ?
最后,我们点“修理dump”
) q6 W9 Z' `% {, K% b. s; f0 s/ V! v9 C
选中我们的木马就可以了
' a2 n! f. Q% m, u9 d  @0 a/ w; Z& y
  K/ h1 U7 Y8 {5 \* N最后我们要用到c32asm
( \% V2 O/ S1 O! J  H1 C/ ^5 u' B, ^; m0 {1 C
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
8 g1 a5 |0 j0 Z$ v9 N  N
7 |7 x  |3 y8 {1 f% z这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
( J/ m. W4 C- E2 n/ o& y, `* Q- w  c, m) U0 R9 Q$ H- F3 H/ T' C; g
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
5 O& x" ?. _- Q$ k2 S4 `# w2 s
" i5 }$ ?* N$ m) s. m我们把马子拖入od的以后,打开了importrec1.6
; G  m# V2 A" d2 s/ \1 J% A6 I! R; g$ A1 j5 q
在选项那里,选择根据序数建造输入表和创建新的IAT6 v3 o% }; D0 a$ V  e8 k& P7 L- P) d1 g
: B4 U! U9 D; A
如图
. r: l: l# a6 z; |
  u' E, I% m- V$ }2 s# \
0 K* h7 k+ g& b以后的步骤照上面的方法继续就可以了9 H& u0 y/ A/ D: n

: \3 Q9 W! O) g5 E2 k不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了3 l7 S6 G5 ^3 ]3 Z- Q2 |, w
! N- P, v9 V$ f  ^
因为kernel32.dll的大小不一样。* p- r5 e: D3 V& t+ A

3 K$ n+ Q2 f2 c3.修改originalfirstthunk, ^$ p3 N4 [9 H- t. U
1 d1 s$ u; N5 R1 q9 z
如图所示, _: s6 v" q8 M, D
: P6 q; E; g) L1 V' f/ V
% U) t6 y; Y; g4 g1 N
我们打开loaderpe,依次点  目录--导入表(后面那个横线)
0 k7 p% L: R" ]
. X' h2 b" t5 c7 g我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll" E; t" c1 [5 }$ @0 d! ^8 y  P) Q) @

" Z: x9 |2 I4 ~: W我们右键--编辑--把函数后两个00修改为FF, \1 F# f4 R3 f9 c

0 s8 T6 Y; F8 J" b# [这样可以过小红伞查杀。  虽然会出现错误提示
! I- L, e3 ~& n1 X/ H" e
3 {! Y; _8 V* J( ^4 T1 I2 Z但是不影响木马的功能,不影响上线。: i& j" a% j, L2 e9 |
! D1 ?6 X9 @" w. J3 s
4.dll后面加20 90法过卡巴查杀
8 x% ^" _* Y% S3 v  T. u, A8 t" [9 Q: U- T! e2 ?; N- M
需要的只是一个c32asm而已,非常简单但却非常有效' n% H" z+ I/ l2 h+ p  e
3 p" a* g' Q7 ^# B
如图
( k4 o, L/ J: n. S9 p) \2 x# D5 {5 w5 p, b$ r
8 u) K+ j$ D  i3 i' l
8 x0 A; @. U" x* F
我们可以看到,' j  a& B% ?0 ~0 e' R

- A: ?# E! X  U! |8 E1 Q) W在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 909 V4 Y. W" k7 [

' z0 i& h+ }, V这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
! `" [  A' n" \
! @( T0 ^( {: N- d/ R' I! n我们只需要在他的所属dll后面加个20 90就可以了7 S0 w) C  E3 \3 h3 M6 Y5 X
8 S+ T& @# S. T; z4 }9 ?
卡巴目前还不查杀此免杀方法
( p" W* P5 P8 d$ W: e2 w$ `
6 D7 E1 M2 z, S$ E# c0 t' T$ B3 }- ?$ C5 `8 n7 y# q/ A; \- N! v; b
唧唧歪歪这么多,打字有点累了
6 E, N- n3 x! c/ Z! l" I- b1 t4 I+ u4 h% @. k' `
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。9 v2 p% E9 G- t7 p
  N7 J* B: A% S& c
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表