返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
' J* h. w  _5 X8 X" K5 d% K# u% {& N% S- l" i2 r, c  {. Q8 T
特拿来分享给大家。
' m9 d- p1 E; V/ W1 u1 G; X: B
1 `! z. F9 Z! z& [: U# I. ?今天我们不提我们国产的那些杀软,真的垃圾的要死,
" m+ d" [8 |* z4 k; {4 m2 B# V& E: j0 }( L/ a) e) q1 X
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表$ s7 ^! I. u# F+ ^! z8 H4 Y, B9 o3 E

# o9 ]3 K7 Q& y$ h: r我简单的重建了输入表就把瑞星搞定了,9 I6 A; R' }* Q/ l0 z

$ ^, L/ n6 I( }6 V失去信心了。我曰
7 w& _& o7 p* F& x* O, T5 E2 ~- g# n3 Q2 ^4 h
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。) W3 g, P" d% m' }3 u$ s

( V9 f7 S; [" |首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。. l" l5 b2 u  O

3 h$ x+ `1 v# B外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。* @/ s3 Z/ r, P, d

$ N, j+ Y# \: e+ I% C9 P高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
1 J4 J/ c* @4 i" z  b. o4 k/ t8 C7 s
过了以后再调到最高,再做免杀。
" ~6 I) e9 }6 r7 z4 E9 K
; z5 r% |0 X" |1 O; B( C$ U以上是废话,' }, H+ }+ S# ]( i/ E/ m* M1 W3 S& Y
* ?  h9 O6 e! z
好了,下面我们来说下常见的免杀输入表方法。
* l! k& t. l' Q) y7 R% R6 U7 C
0 F1 V$ Z& y  n& G0 ^. A, A一。移位法! c! a$ t" Y# L2 K9 ^" s8 s
( l$ u5 f  h. s9 [8 W
这个已经过时了,我们的国产杀软及时的跟上了时代,. {. r, S% p4 q4 ]4 A
0 U9 ^0 `# q. |2 J: ?
移位法在去年过金山和瑞星,还有江民都是可以过的,
" S' |/ |: ]' k: b" t- M  G" m: m. N  t5 H: I' T& I
现在的杀软智能化了,移位么?呵呵 ,追杀你。! J) V+ H* J: E% n& B
- `) V* {4 r0 [* L
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
8 U% k$ a* [' r5 o+ S1 y. ], \
+ E. ~9 m$ I! O) X& [5 B二,重建输入表
* }; J  L- o3 s: V: r) Z3 x  k/ z  G+ L. s
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈$ q0 l8 b3 V8 q7 |+ ?3 C8 z# H

  c' o3 E( s1 R' D2 r* g这里我介绍下,! V1 R8 L# ]1 B* q5 z% f

1 H/ i) X/ b) t1 _4 S. I! W用到工具:
1 `* s* a9 W$ K( H7 B0 A5 mimportrec1.6
. F4 U2 T5 l% X4 G" ?od" ]1 V( `% r) |4 a1 T
c32asm
0 q/ d( W$ ^0 p' Eloaderpe
; R9 B' Z' ~6 ~# x) T& k: E" ^8 y这里我们简单的介绍下,如何重建输入表
8 R1 F& k% G6 r' k& L! A
" \1 ]0 d6 ?. s4 I& ~8 Q% x首先吧文件拖入od,打开inportrec1.6' l2 P+ |3 D; }. @( l

# L2 S7 J5 f) w5 Y  K如图 选择拖入od的程序,* R/ }3 m- ~3 G0 ^& K! K

( T. i( u6 X$ P  E, B$ p9 e& Q8 q& {, \; |5 \: Z) j$ B( k
这个时候,我们打开loaderpe,
- D  h2 |+ z4 f+ r0 z8 c4 V
, m7 t0 S6 k5 D拖入我们的木马& Y0 L0 X- u: @/ x6 J4 h, K

5 F1 O+ o) K" U8 z0 t3 j选择目录,. o* }& y+ i$ i6 N* Z) a- @/ [

9 U9 W: I; M2 V; \: v0 V我们看到导入表这里。。。
% d! f1 M" z% ?. X/ s' m3 [# @* O& N
如图:
$ z) P4 z% q( d& q: r, W( s* A/ ]6 k. B( A# v* z+ B+ A
4 E# y6 v3 u: z( J; V) a, a. U% D
RVA地址是0001D000  大小是0000154C1 P  e3 s9 k( ?1 B
# n2 f9 _' j4 f: z( A: {
好的,我们把这两个输入到import1.6里去( P+ A3 C1 M% G5 w) k* L$ C

& R7 [) m5 V# U" U& g1 a+ p6 y- `7 k就是在“加载树文件”那上面一点 ( B2 ?" o2 R* _

2 n( ?# Z3 J+ `9 w% j% A输入RVA的地址和大小。# @9 @/ l( V; L7 r: [1 i  W! Y

" J2 d# N% W. o, N8 O# Q. y点击“获得输入表”  z3 O7 d* h4 v* {9 _. D

& A9 ^4 k" D6 }* \% O然后点击“显示无效的”( F# e* R/ W) Q9 @
4 q, D- U0 d0 O' K- k) q
接着importrec会自动列出7 q4 }& T" _  |) v+ z6 O: x4 w4 f( z
5 r4 t4 r+ x2 `  b* o) U" ?3 u3 Q! {
我们把深蓝色的字体  右键   剪切无效的指针
% D. V. J) q- m8 o" N
; g5 x, [2 u1 p, L
% K$ q' w, h6 I' R1 l5 y最后,我们点“修理dump”/ r7 l6 H# i) I1 m+ n+ f" g
: Z1 P- s, P- A* F
选中我们的木马就可以了) j* b& x5 I/ @' K, s8 X, [; Q

8 B- S1 K7 H6 N8 Y6 ^" P0 V最后我们要用到c32asm* ^0 l5 X- \; c3 M) Z

& B$ J, i  c) g) o我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
" T* X8 Q* i; ^+ `& Z+ ^, Z  ~# e9 z9 q/ j
3 y' n6 S$ x, e, {5 D# {3 F5 S2 z这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
6 `7 q: o6 E) H! ~4 N& Q" q# L: Z; R; c+ p* Y* u! C& Y9 B
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
0 ^# E5 o+ b) `1 y: L
7 ], G) J, h- u2 \我们把马子拖入od的以后,打开了importrec1.6
) I5 G; J) {' O3 B
7 I+ d1 b  J' t- {在选项那里,选择根据序数建造输入表和创建新的IAT, }$ |  I, x$ O$ ]+ L7 w
8 ?  {% r* X! \# p
如图
; W) q3 _3 m  U: B
9 G1 u1 y& q/ R4 |0 T4 k3 P1 w  j3 J& ~" h, p
以后的步骤照上面的方法继续就可以了7 q  G. q6 p1 ~9 p' q
+ y4 t9 `- w8 G( Q, f
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
  M2 `9 c. i" h7 W' f3 ?, Z% n8 s/ R/ W, O( Y" c. U
因为kernel32.dll的大小不一样。
9 h/ b. u) a2 m1 b- d, @7 d! D
/ X* V8 w7 I5 P1 g+ c7 r0 L. ^6 Z3.修改originalfirstthunk* m' [" C+ |) A! |3 [' [4 `0 `
5 h( S1 i9 o1 c1 @# C3 m* Y) T
如图所示' }* H: X9 u# @

/ I3 l; {+ p: T* _. c; @) X' i- f3 X6 r( k* m. h% l, A. H
我们打开loaderpe,依次点  目录--导入表(后面那个横线)0 B8 v' e7 ?# p) h: ?0 c
9 H& J) i9 O( h  O5 L0 L9 U
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll$ ]5 {8 w! g/ {6 O, k

" H; d7 j7 c' v我们右键--编辑--把函数后两个00修改为FF6 w2 t9 ~, g- y

7 s" R  i6 S( c: [3 Y1 Y' t这样可以过小红伞查杀。  虽然会出现错误提示5 g8 D, P; a! `$ E

2 u- r0 e( C( O$ J& H; i' W但是不影响木马的功能,不影响上线。6 d4 P) z# D" Q

7 y0 V) H% Y# W( U( ~. V* M  }4.dll后面加20 90法过卡巴查杀) V& C2 e0 U. e- S. \( O
/ ?. c: y' u4 J( |( H6 G
需要的只是一个c32asm而已,非常简单但却非常有效4 f/ r6 `( K7 o' |

, l2 ~5 i, O5 R# K2 r3 z如图' }0 S+ u) m+ J. F  b$ q

# |% v0 z& `: B# _7 l  t) G) `
/ v3 [# o# m8 \: V
/ I/ }7 A  @( k: j' R我们可以看到,
6 Z8 h; x% s: X5 s, |) L" S' Q( m1 e- {
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
5 u8 G5 B1 T' U( [) Z
$ Q4 x  B, \- e7 Z% X这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
/ F6 q6 \' G, g& h! R4 f  n( K/ S0 ~0 x! ~6 g) h. I$ ?4 h2 b
我们只需要在他的所属dll后面加个20 90就可以了8 W2 ]% O" q/ z! ^- G( F% i; i) @9 ], @

- o& Q) ^8 s9 W$ o7 w卡巴目前还不查杀此免杀方法( m1 b6 {9 v  L1 R+ O+ [# h

. r. f. ?0 E& f6 L# a; c8 t. m( k
! o' Z7 E/ q3 f0 d( }: U) m' a' l唧唧歪歪这么多,打字有点累了
- Z# }" w4 _# \9 @! ~( o7 ?1 F
) B4 e5 ^3 X2 C0 v: V以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
; Y6 @0 M7 r3 G% N
' s' J# X7 C. d  O2 W[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表