返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
, N5 V. ~. Y, p: I' b
# p' j# y+ ?: M: ]7 |特拿来分享给大家。7 A, w/ o/ V2 [3 M; `/ W$ H+ w
  X$ q4 O% R2 W) W9 d% N0 L
今天我们不提我们国产的那些杀软,真的垃圾的要死,0 \2 T, M0 J; t

8 X1 [0 O% c( s; _# S4 f$ ^上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表. d+ c4 i# i" e  Y. J

' `5 g4 }7 w- m* [- @+ D我简单的重建了输入表就把瑞星搞定了,
. m" B3 c: g% c; c7 _
# p7 ~. g! w' Z" x8 _9 `6 k失去信心了。我曰0 b: D! Z/ R6 n, a4 W; g

; ?/ z4 }" b; F: k9 @5 u. w今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。( l$ M. ?5 R( g4 O, L
- n/ d7 `1 N0 Z
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
( K& K1 D! a5 i' e6 ~3 T
8 }% b# i2 x& {$ o2 Y& ]外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。# O+ }$ d+ O% Q7 j2 Q
1 A3 H7 j7 H+ E' P
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低/ h3 r1 N/ F2 C" Y4 W: J

9 Z5 K% u6 p) }! u过了以后再调到最高,再做免杀。1 n# d- ~: {- e% l9 U* L4 h
7 J/ O5 e! s' c: p8 h7 Z' _
以上是废话," h8 }& y6 w% R& I
" E( f; ?/ D4 w; ~
好了,下面我们来说下常见的免杀输入表方法。) Q4 K8 M  y4 ]! y
" E: L& i& w( U4 i9 E" ~* n; H
一。移位法
" S$ W4 h  R. s2 K0 p5 V6 E1 ~7 ^$ f/ ]9 J2 k! h+ \
这个已经过时了,我们的国产杀软及时的跟上了时代,
( [' B0 X, D" e! u# G. X+ t3 f5 L0 R$ Y+ A2 a7 J
移位法在去年过金山和瑞星,还有江民都是可以过的,
( K$ j  s; M: A( r. c( f% g+ h. `( z$ S% t
现在的杀软智能化了,移位么?呵呵 ,追杀你。% v+ J4 |$ c% J

; {( Q$ \8 s3 G- l0 \% g如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。2 {# m3 W  [2 E7 ]% q

- D- V6 H3 k  |8 B) S二,重建输入表
' c7 N& C  l4 j* C% o! }1 G0 o2 @* \/ |+ |3 r9 B% ]
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
$ T: Y; M6 Y. a+ k$ }+ m9 m8 [' l, F& }3 M. D: y. |
这里我介绍下,2 Z, O4 R+ I+ L$ c6 p
% E4 z9 \) E9 q3 w
用到工具:* a/ g) r8 h& \1 s/ y
importrec1.6
% z; e( d, T; [0 ood
3 j+ D* B) h+ |# fc32asm7 v$ ?0 V3 R! l# E: k$ `: H: N5 e
loaderpe
' [4 z2 i) Y1 e' b3 w( }* \这里我们简单的介绍下,如何重建输入表  m1 R: m' u0 R# x

! I  n4 h6 M' n首先吧文件拖入od,打开inportrec1.6. n+ t1 x5 W: @9 {* }# y. Q, A
# R5 [# M7 g! i, [# X4 {& i' t
如图 选择拖入od的程序,
% O# H5 F' Z$ |5 o
+ M1 m* ~- r% K' e3 [$ s# q; O9 J! P9 g3 I6 S; @
这个时候,我们打开loaderpe,
/ ]1 E4 o# t0 N9 W# V8 x! n. E) W8 j- L) n7 j2 S3 C
拖入我们的木马8 F  _) |8 Q# u7 G9 b; K
, s4 N! f+ g& x! C- A, C8 t: ?
选择目录,
# }1 u3 N3 I8 J6 C: l! J9 w7 L; @$ c7 v8 @9 U
我们看到导入表这里。。。0 P" `. p& [% F

8 X( N' t7 Q2 @4 v% }; g如图:
0 D3 b4 Q: p3 m7 A( z8 q3 k+ n3 ]$ W9 ~/ Q; S" n: g5 _! U( c3 h

' I9 B& }  }4 e, [RVA地址是0001D000  大小是0000154C0 r+ y; n" u# m, y
( ]* y3 n, r; Z  j
好的,我们把这两个输入到import1.6里去
; m6 P6 h, |6 v' C
) w) L& j1 }/ ?* `% k就是在“加载树文件”那上面一点 # C+ z% o7 V- N7 S4 {& [

& a: g  h- v4 L输入RVA的地址和大小。
! t+ F3 N, B! {. Z: a4 U2 G; h  s# U
点击“获得输入表”
- f4 {. \$ }0 n. z3 t* H( z
5 G8 J2 V% G) O然后点击“显示无效的”
) Y- H2 Y; M9 \" D5 _" G
6 k! @6 Q6 L9 \. j) H3 g接着importrec会自动列出" l: j: q& G4 W2 a0 m7 @
( A4 ^8 W" G# V& t
我们把深蓝色的字体  右键   剪切无效的指针
! A" H2 {( t% Q
# A! E5 ?* B- g* h4 i+ S
0 Z$ z* Z0 S8 h; g) Z- m5 b  `最后,我们点“修理dump”) \% H. z9 w) e  {, K) R

, }" k3 u2 X; P2 |( U选中我们的木马就可以了7 Q/ h( p0 G, S4 r2 _

( m1 j. w1 J5 i* Y最后我们要用到c32asm; w# O% U: X$ Z3 A
0 _" M) Z# L- x' @* O7 \4 ?
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。+ @% S: C) n( c9 R0 u4 @$ w

: x% y" d: p6 M6 {6 H9 C2 k% ]这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)4 x7 h( D+ D/ `

& h% E. q3 r6 U: M这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,6 j0 ^5 e9 b& v: o0 W' X  t
/ e* e: U2 k1 H; g  ]
我们把马子拖入od的以后,打开了importrec1.6
6 k- W! `- V  w1 Q# H2 @# [  B! A8 d1 F' Q( @
在选项那里,选择根据序数建造输入表和创建新的IAT1 U" x$ c$ X1 i7 r/ t# K

, b/ C$ S  A1 Q; P如图  T, l/ H. V6 Q- P  S+ q

* ]5 J- b8 m: S3 @7 \0 x- ~& }# L  \5 Z
以后的步骤照上面的方法继续就可以了
& c7 j* n/ k4 O. e# a( K8 H4 r# P+ l" v2 p% z
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
$ ?; Y. O# g) r9 |$ l6 H  E" M) J+ u7 A  l: F. h! ?5 Z
因为kernel32.dll的大小不一样。
- ^- r. x. s7 h# Z( N& n( P& P2 b- K3 K( ]6 T
3.修改originalfirstthunk
4 m1 I5 @3 g' X4 M* @/ f/ B6 D% b  v" _  z9 V
如图所示( [9 Q; j- V9 T) S$ o

, h: d, h; A* q9 T1 f! R% k  d1 Q* d# k3 K1 x. A* |5 e
我们打开loaderpe,依次点  目录--导入表(后面那个横线)
9 E: h" _( t9 ?$ h+ c+ H3 i3 G% o" G# V9 ?- A: r
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll: ?+ K# c2 U4 U/ ^4 B

) R5 [. G3 O; P, ?我们右键--编辑--把函数后两个00修改为FF( L1 p/ }3 N* q' J( }

2 f5 c2 N' z  K) m) X% j这样可以过小红伞查杀。  虽然会出现错误提示) E: W$ g$ k! R3 @+ N1 I* q# h

5 o# z; `+ L# K4 K, z, Q/ M6 x) w但是不影响木马的功能,不影响上线。; w9 b# R7 T3 K+ M) B2 d
$ g% |/ t( y1 A: {2 B2 I4 i" P( f
4.dll后面加20 90法过卡巴查杀
3 R, g3 g/ ^" M: {  d& B1 N6 |7 h
& ^6 G! T( z: z7 T4 {, ]需要的只是一个c32asm而已,非常简单但却非常有效
7 p5 {2 e! L) G# ^# [# T- b6 `" p: z5 H
如图! c8 ~! z! o. W( v( Q" E1 M3 g) d

. }6 c+ T) R8 C. h" U. p. n& @, S0 t7 O2 h6 v
4 Y" M+ y2 n7 U0 I6 e
我们可以看到,
3 ]# a( N# I4 l3 o
( [1 n8 Y4 |" c% }7 A( a1 @在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
- z0 X; e; \! \8 ]  }
$ r% A0 d0 g5 t, E( p# f这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection  J9 r# v( |2 l: Z
3 y# W4 ]) I2 [+ d2 j
我们只需要在他的所属dll后面加个20 90就可以了" L+ T* V+ @" r3 H( m$ G9 [
8 t& m- E" J: m% \( D, y4 J
卡巴目前还不查杀此免杀方法
" H4 N! |; X- M/ z% d
. \  `% w$ H; t; E1 n0 `# Y# D' d2 {* _' A: c8 P- k
唧唧歪歪这么多,打字有点累了. b* f0 _9 o4 F0 B# i9 k# b
7 M$ k( }8 O+ T* S' q2 u
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
/ v- e5 q) W. |3 v& n4 `9 o
3 C% n/ V3 C( r0 D0 S& o/ D( {2 |- m( o[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表