返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,! V: Z# u  d1 F
+ B" E) Y9 F* W+ ^
特拿来分享给大家。
$ Z' S+ |( a/ S4 W+ E
% {/ F* ?' L( ?* k: w5 u今天我们不提我们国产的那些杀软,真的垃圾的要死,
2 {- x" s1 x: f6 i" r1 B1 v  J5 [) @" p7 f* y& i
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
+ ]0 L! X6 ]% Q* p) I# f& j$ B7 ?. o# ]* A9 g$ L' n) J0 i
我简单的重建了输入表就把瑞星搞定了,2 k  i" q+ `. K1 z
, T* }& i5 h2 B$ G3 u
失去信心了。我曰0 b7 ~1 B/ i7 O, y) R- R: u& ^

7 s0 D) n) V0 b4 _7 A6 |4 F8 u今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。! T" e9 z7 v2 R( |/ G

# R; ]9 o2 A1 ^% N8 U7 }首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
  ^+ x3 b$ z6 ^: S
  T2 I3 z$ H4 b外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
- O; P5 C7 A2 I7 ]: F2 v7 n5 O! j: Y/ q/ @3 @4 B
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
$ r( M, a0 D0 A0 C
1 D9 o+ P) A, k8 a, o2 ]7 o过了以后再调到最高,再做免杀。9 F; M$ B, k7 y) j" \4 A+ N
9 W( a/ N6 d% t- J
以上是废话,
& d2 A$ Y: k: U: a/ N; u
! Y7 q. Q  M' T0 }好了,下面我们来说下常见的免杀输入表方法。
* Y# i5 }$ z5 Z( C* S# R
- J. U( N% R/ a$ e, ~6 X! \一。移位法. u  _- [9 T. Y

/ U1 t5 T1 P; B" K这个已经过时了,我们的国产杀软及时的跟上了时代,
5 P' i; N# [- j8 n/ A3 l. D' r* i. S, z4 h
移位法在去年过金山和瑞星,还有江民都是可以过的,
) q/ e' k+ \1 ]( y7 A( _) W4 g7 \6 e; j
现在的杀软智能化了,移位么?呵呵 ,追杀你。
4 R  q0 ?# S& A/ F! ~
2 D* g; ]: p5 f' t/ I$ O如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。, Z! ?" M1 r3 n  b; t7 @4 U

# a7 T. H5 }4 w二,重建输入表( n0 l6 Q' |/ ~& p- V7 X6 }

. w8 l/ o. C/ n  H( h效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈/ j- x3 E1 }  ]0 m: W1 T# e- P/ q

8 W9 v: j6 x5 S8 L- m这里我介绍下,
; g. p( I- C, m; t  Z+ @$ \2 Q2 d$ u( ]- f9 V
用到工具:
5 b3 v, k$ `8 @$ B( H% P. h  zimportrec1.66 E, h8 f, K2 g2 X5 g: f3 u" c! u
od
+ z7 k5 B. D9 p% s3 \0 n( Oc32asm
) [$ }/ t& Q% ^1 L$ ploaderpe) [# i6 R+ E  y7 E& t
这里我们简单的介绍下,如何重建输入表
& ^: i' Z. N+ h5 i, v' B6 H% f
. O# Z  X, t' t. n4 Y首先吧文件拖入od,打开inportrec1.6
: L$ E8 T* D  o' n2 |3 [$ c" b
* P7 v# D, c* U0 ?" p% B9 V如图 选择拖入od的程序,5 w/ R! _, Q- ~
8 M4 M8 _0 `9 ^. j/ B& ?2 e3 u, z
% y% G( p9 W; I, q- f% T1 o
这个时候,我们打开loaderpe,0 V: }% @3 m' ?% o! L

, U6 x; H4 c1 Y5 S4 u拖入我们的木马+ p! R( c% p/ h( \- \
- p" s( ]6 ~7 K% Y
选择目录,! @7 G. i* s; U1 r! `7 d

6 z8 [3 L& K6 Q) L3 c  |; y" E我们看到导入表这里。。。; j8 c1 W& D* t" {0 Z9 n4 Z% s8 s; N
  N" e; p! }, C5 l6 m
如图:
8 P" \0 S& B4 ~
. M5 A# ~9 F8 S6 c6 \  V4 x3 _$ h4 R6 ~* f: q* ?: k3 V6 h4 ]
RVA地址是0001D000  大小是0000154C& A) m3 X; i3 W6 \$ Y9 D* r
1 n" X- k1 x' T+ |6 x! E  [: a- G: g
好的,我们把这两个输入到import1.6里去7 I+ k  i  `( U1 A, v
6 E5 j# ?+ _3 r1 l1 g5 K& n& l
就是在“加载树文件”那上面一点 , C" I2 c2 G9 z+ e
! ^$ U# U- a: T9 U5 B; x
输入RVA的地址和大小。% g6 D6 M; a0 k) ~$ B
& s( I5 ?1 Y0 G5 H/ R3 i$ P( `
点击“获得输入表”
5 M$ U2 I- t# V3 z6 F# K) G$ W* M( }" b$ t6 C3 I
然后点击“显示无效的”# S; N' q5 e, x6 v+ ~

3 ~  b3 @- d) m1 u; A接着importrec会自动列出
8 U, |7 P; X6 W- ^- j3 q$ R* R
0 r! v( m, a  f. |我们把深蓝色的字体  右键   剪切无效的指针
7 }4 R1 `' K" n  x6 q( W
/ y/ y* K  I' z  ?: V
. j3 F$ s4 _1 [' U* W8 E. E  h最后,我们点“修理dump”
: K# d- X+ {7 d& X: p3 N- _- J$ \9 {" S4 s* h9 E
选中我们的木马就可以了
7 [8 ^- \# B2 j3 d: }
+ P$ p) A9 Z( e% f最后我们要用到c32asm
. M  S7 [. _6 y; p
' m0 ^$ Y1 R+ |8 t# ~; u8 |5 A我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。! V* Y% J  I# ?& a
3 v( I# N" w/ x) J( h6 H; Z
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)) }* p* T' x* J5 t
6 p% s4 z$ W1 Z" M0 _& O. u* I
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
! u5 P% t+ ]$ p- J1 }; M: Z: D5 e0 y4 o8 o% u5 X/ z
我们把马子拖入od的以后,打开了importrec1.6
4 Y; O8 C4 w9 S6 O4 P* S. O9 t5 N7 m/ f0 m0 }& Z  w* z8 s. i
在选项那里,选择根据序数建造输入表和创建新的IAT; d7 @; j6 T$ H; z" U: F
4 b5 [0 C% O5 `/ Q- Y& n$ H$ v
如图
3 K) {* j; p$ ~" X. x. `* c% U3 s# M4 @
9 H* W. Q6 N9 ]5 G4 N% Y1 ]+ H* G8 o1 J0 U: |  e8 e* i
以后的步骤照上面的方法继续就可以了
+ u4 l0 t4 g: R! T7 _; _& ]/ T+ C. n6 ~$ u8 n1 Z) v
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了4 }& P$ D: O# t

' z1 u* {6 |" S, a1 [( k因为kernel32.dll的大小不一样。
+ L& _4 I8 Z) |# W, b4 I1 ]& |$ H2 s$ V: ?7 H
3.修改originalfirstthunk+ B; |2 t- R+ Y: p$ a  G

$ ?  z% Q$ L1 c1 |如图所示$ L8 g9 k8 U+ C9 w  N* @8 e

6 p& V2 Y: e2 u! C) I6 g7 I) R' ~! R, A/ {" E3 K3 E
我们打开loaderpe,依次点  目录--导入表(后面那个横线); M! v8 z1 M: V% N1 b5 }4 g

% A( G0 E( Q3 @我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll) f* U) D6 k% p8 s3 \
! L) S4 T2 `# n- \, K
我们右键--编辑--把函数后两个00修改为FF
1 r6 D8 {  a4 t5 A7 G8 U3 s* @! A
这样可以过小红伞查杀。  虽然会出现错误提示7 J, b8 ]- ~, _, H4 n4 k/ X* U1 I
* O' d5 J- N9 q$ G4 q; J- c
但是不影响木马的功能,不影响上线。
2 l/ [& K8 T4 m- Z- H+ b8 {* S% m8 M2 q$ }* t* |
4.dll后面加20 90法过卡巴查杀
1 G1 T2 P; x3 z1 S
; v6 j& @, @+ q- Q需要的只是一个c32asm而已,非常简单但却非常有效
% _2 t' e- t9 b: m. n& d) b& I5 c8 e- k* P# F; ?4 q; E$ D
如图) Z; N6 Y& U* F1 O- ?: b; x0 s( Q

( B5 K. A9 ~% q# [: a) x/ ~; s6 N# N8 b4 e: R
1 T0 C8 ^  I) T9 g1 G
我们可以看到,0 n+ y; G$ W% p2 N+ ^

6 z5 k2 V" M& ~% [在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
4 y* H9 h3 x3 O2 R8 X! |& R+ [' i# a0 ~6 F6 Z3 e; ?
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
7 ?! w0 `, `9 x! w9 }9 O
9 l0 i: R" s2 j我们只需要在他的所属dll后面加个20 90就可以了5 V" G4 N, A( p  Z/ t8 Y5 k

! j: [' Q- c5 @$ U7 [卡巴目前还不查杀此免杀方法
3 n* R3 h/ ~# n+ ]1 I
' J1 v) H( L- F7 J; h
3 q4 i# e& v9 w' t唧唧歪歪这么多,打字有点累了( Z! z5 r$ p( @* ^  w: @* b
, W5 i; P/ r! s
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
% U! G& V- F8 X" k- }2 Q3 I6 `3 ~0 P4 `" l( Z* u, }# a1 ?
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表