返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
0 |1 m5 `  R# |
+ [. M5 V9 `4 L. \( [  }8 E/ S特拿来分享给大家。  E  i3 I& ^4 M% A* [& B
9 ?2 j$ b4 X" I" M
今天我们不提我们国产的那些杀软,真的垃圾的要死,
# m; U  j: u+ }0 R, F& R* `. Y* j2 q1 m! |
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表& R4 c# ^3 G" @3 r: q6 F5 B! s# V  A
% o8 I8 n3 a1 D2 {# n, T! F: }, V7 @
我简单的重建了输入表就把瑞星搞定了," [  m& P7 |! C. C" p7 ^
  m! E8 r- Z* W; Y) ~( s* g
失去信心了。我曰: O0 b/ ]7 n  w; n/ v$ d

+ s6 q: h- w# [/ p, |今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。# J$ A+ w) T7 R5 Q1 x+ x5 W

  y2 ^5 R7 z% u- H" i  }! H首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
" H5 W- {9 e4 S2 Q' H) ]+ P& t% u+ x4 Y0 j- T) `- m! n
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
$ p8 q2 w! I% I; ]8 n* b
' S! Z" ?( w/ N& t高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
- O  V; o4 |* X- e' |( d
5 [+ f' w, N6 P0 R, H+ P过了以后再调到最高,再做免杀。0 i- N/ I5 o/ g3 H$ V6 ]* X+ t

4 L+ ^7 w( ~/ S5 y: U以上是废话,
) ^2 w; t  z( ^( n' ]. S
# Q; a9 ?; ~6 I9 ~' V8 i* r) d* i0 ^好了,下面我们来说下常见的免杀输入表方法。: ]0 L  L) V) w! n- |: B

) n& ~  b0 f/ H3 K* Z一。移位法
3 n& J& X" u6 U5 X  _) H/ x
' W8 G0 d5 n$ G1 n3 z这个已经过时了,我们的国产杀软及时的跟上了时代,8 k# N5 m8 \1 _/ Y3 i
- |7 m. i: |- D/ j- g
移位法在去年过金山和瑞星,还有江民都是可以过的,
' _( P# b8 c6 O& t1 c3 |9 a7 `% O" b' [6 ?0 i2 N0 E8 t$ E
现在的杀软智能化了,移位么?呵呵 ,追杀你。& G: C, G- Z, v" U
# z. v3 z" F3 ?( h
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。3 o0 H* r& p6 l( [% n0 M+ M
8 i) D1 f9 J/ \' P+ y5 n# O
二,重建输入表" n3 Z/ }% ]9 K$ Z1 S% ?

$ N8 h0 N* l  t- m  f% [效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
( z6 O' O4 ?) _! Y  Z+ o% L# }2 W
这里我介绍下,
9 w* W! r9 f2 ?3 Y/ Q6 v, `
4 |) h* j4 |6 f: A0 d' s用到工具:
, S' v: X6 D* simportrec1.6
" B  ^# l! ^- y* q7 Eod; h8 S7 I! ~, m- ]9 E9 K4 d* E
c32asm" {6 @6 X/ Y6 E) V0 R" ~
loaderpe
- n# p* A& F5 R( I" n3 R8 C这里我们简单的介绍下,如何重建输入表- i, A# N* H: W$ [/ e6 T
4 ?$ ?0 |: L8 y3 |& D
首先吧文件拖入od,打开inportrec1.6
' x% a, f; H1 }0 A  \
7 Z  K) s( L1 x% \) v1 f如图 选择拖入od的程序,2 A: P+ H& ^+ W

  D, i! X5 ^5 f4 n, ]# c) j2 ^$ L; d% H% F: d: h! W
这个时候,我们打开loaderpe,
$ t0 M! e& b; ^5 s' Z# b# `9 |: o3 @3 B
拖入我们的木马
7 v; K4 K9 c/ X  O
! c  h" }& \1 ]# Q5 s. `% k; Q选择目录,8 V) _% T1 ~/ k

' h9 T* g+ J! b& s; U1 Q3 j4 ?我们看到导入表这里。。。( b; ?+ K  _1 `8 A
8 H- P8 B( |: S' P6 {
如图:, W3 ~7 i9 W( @& A* X  U4 I
" ~5 v# K) i1 h# a
% w- Y. e% U- `1 A. Z: k" o1 K, u9 q! j
RVA地址是0001D000  大小是0000154C! E, d  x8 b+ f1 h. k1 U

- }, v3 ?( j) n7 L3 T/ V* w好的,我们把这两个输入到import1.6里去
6 V/ o* @: Y, |+ Z2 U! C! v% e% ?% v9 E, _1 S& W3 q' n% E
就是在“加载树文件”那上面一点 " n5 K, E5 |$ k; W# W2 n4 w
* T6 M; @6 p: s2 b+ d1 i
输入RVA的地址和大小。
2 e3 c; C# H( X! y- u' l3 K0 c
- k+ u9 _, l8 S; S5 T3 Y点击“获得输入表”
- m1 H  c% P& h9 ]
  e6 K0 N4 O1 ]然后点击“显示无效的”: {. {& c- r' Y0 ~7 J; `

- R5 q! r1 i" ~4 G1 \* J接着importrec会自动列出
- P+ m7 q6 F! O$ ^6 m
8 v/ U$ Q% K' u5 F1 s3 v6 h! p8 Y" E我们把深蓝色的字体  右键   剪切无效的指针* w; [  h0 G4 ?2 u5 K* B. w8 E6 W
1 |, Q/ l! w+ {

4 h) v$ {3 E5 T# m4 p最后,我们点“修理dump”
$ a* s/ C2 [1 t2 H* O  ^" j3 T9 `
6 ]: p- a- P/ D0 n选中我们的木马就可以了, g" Q( ]! U. q" d+ v$ I
" Q) n, L! j: u  M
最后我们要用到c32asm
0 A# I- F# z, J, U+ a+ H. d6 _. W0 Y5 S8 Y. F
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。: \9 r5 g7 ^& U; V; V; j

, A3 u% j6 b7 i9 j) u+ n* l这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)  H: h4 T9 q3 B
1 x2 J$ ~- q2 ^% ]9 j$ o; `
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,3 {7 T( k/ C' c0 \3 ?* T# B0 m

0 b: T0 ?1 j% S/ z: Y2 [我们把马子拖入od的以后,打开了importrec1.6, P8 I8 _; k- u: [* W( R

$ |3 O, L5 o4 l" B5 l在选项那里,选择根据序数建造输入表和创建新的IAT" p9 s3 {  B3 ~0 A( ~- I$ N1 E/ H

9 W  ^  y: a' L0 w' e$ {如图" v, |+ v8 v, i0 b7 ]# B8 P
# v1 }4 D1 j  Z( q  x
% V8 \1 i( r9 v# E4 r$ @
以后的步骤照上面的方法继续就可以了
/ y+ l1 G% I$ J2 ~+ Y, ]+ M$ Y5 B+ G( m7 ~% {' v
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
+ m8 I: U% o1 _: D, I# }8 U2 k. i9 k! H; O% z( D, x
因为kernel32.dll的大小不一样。3 H( S7 |" Y, [: z3 e* f
, w/ \( J  g- j. f" r
3.修改originalfirstthunk5 g  D9 f8 }: L* K/ H, @

4 C: V; {& f7 C- k& W如图所示3 r8 Z! U( _  i
: j8 _% u% I$ C( t7 W/ \; ^: i

5 I6 \. `/ }3 r% Z6 `( ^) q我们打开loaderpe,依次点  目录--导入表(后面那个横线)
" x6 b: Q# e  a0 J. G2 Q9 w% a% q7 d, R& i+ N2 Q( {4 m
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll4 V( P% ?6 ?: c
+ C2 `3 {* m7 l- ^/ H$ ?
我们右键--编辑--把函数后两个00修改为FF. j6 r2 ]. a4 g6 T$ x8 |& c" _8 A
3 I7 ^& r* X: z  O  @0 Q- p! X+ y
这样可以过小红伞查杀。  虽然会出现错误提示
2 Z# P8 H! U( J( T: c2 U2 ~# K
( \& k% p1 p5 H7 N但是不影响木马的功能,不影响上线。# T* R* o5 P+ d$ w' M
" V( u9 G8 `; U9 L& H4 I
4.dll后面加20 90法过卡巴查杀1 |$ u& P* a  Q

  p/ r$ ~. q  a- r0 H; _需要的只是一个c32asm而已,非常简单但却非常有效
0 i5 w7 ~9 Q% X0 X9 |$ Q) J/ w; x
. S  T" c* U' u9 b如图; Q. @7 B$ L/ R. u' k7 |

+ |5 t" `  e  b& f  f3 M) v7 L2 E. [' b

1 K% R9 ^5 Y1 P7 S我们可以看到,
6 k  x) c/ }9 G' o. e9 `8 l  l: [3 x
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
0 @( D8 W2 m. l! M+ a" D# d& T1 t& |( ^! n2 g
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
3 X( q5 y3 P. E6 j& h% d" ?4 O0 \' G7 Y  N$ g3 b
我们只需要在他的所属dll后面加个20 90就可以了
1 ^; ^! d9 H# u) m: M2 H; R5 l. ]2 d) c; \) I. X
卡巴目前还不查杀此免杀方法
. S2 [9 g4 L: J( Q; T: d
4 F( k! i3 E# j, p; L/ E- u" v, A  M' a; d- L, K1 _* g3 b
唧唧歪歪这么多,打字有点累了6 _; ^* A) K: e. H$ a' {

0 G! c, I, p3 u% l以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。& v6 A+ I0 n- @0 b" H6 b
7 P9 r6 S0 a8 Z( W  w) ~
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表