返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
. ?6 e& E2 U3 ~% [$ f1 X8 m; Z1 v" \9 }
特拿来分享给大家。
- @  o# _; N. S) z# D6 S* W0 w: f/ j, r
今天我们不提我们国产的那些杀软,真的垃圾的要死," g: n* ~% }# l

2 m1 u) c1 v* _& L% u% z8 R8 J上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
7 w2 e# ]1 ?: E7 t2 p
' d* Z& M5 H; N. F# {我简单的重建了输入表就把瑞星搞定了,2 S2 c; j) S" W3 R6 R& h
, h# `! f* P  h( }! c
失去信心了。我曰$ r; d) V' k! b# {. P8 s

9 f' R* Y- j9 }, o  D今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。6 ^8 C- I! S& U4 G7 `3 {  a; q

( D3 }/ l, [% p6 b首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
. I2 Y. I& U. B0 Y: S2 {8 V9 c' P: v3 f
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
% J4 @) ?. {/ h0 f3 x; E- ^
, @4 h' ^) d6 G8 n高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
! k# E1 Y* ]5 t4 \/ r$ R7 j8 O% J0 ?. R9 R
过了以后再调到最高,再做免杀。
& i. d6 B# g* Z$ ]: f
4 r+ v! f! `+ C; Y- Z以上是废话,
! ^% Q$ r& i9 D6 p2 h8 q2 |9 k+ }  o0 D& ]/ v3 K4 ~- Y
好了,下面我们来说下常见的免杀输入表方法。
# _  d7 P8 ]1 Y+ r8 f+ a4 F2 Z9 t8 b# s# U5 h7 y) Q: u
一。移位法
- ^$ W1 L) [6 z$ e1 q; w. ~: \! E( {  k; O( |, s$ x
这个已经过时了,我们的国产杀软及时的跟上了时代,
  D1 i2 V3 x' i2 `$ Q8 b. c: z) a3 z& P: U
移位法在去年过金山和瑞星,还有江民都是可以过的,
, G8 n! z( r# F7 }5 i0 A8 o* K$ y# d. S/ v1 g# C
现在的杀软智能化了,移位么?呵呵 ,追杀你。" s3 c6 o7 x/ K9 q# K
/ B/ A( j8 O7 Y
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。3 T# u1 l8 U/ ~

! s/ H6 Z2 {/ |/ n7 f二,重建输入表
& U3 {& d0 O: m1 t0 C1 r& g7 V1 a* Q  J. H! F
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈) h7 O9 o+ B/ I

2 u0 @- H) a( N$ ?  P  ]这里我介绍下,
6 j: j  T: l- ^6 x- ?1 q4 h( n8 h! ^, q$ T6 u% x' X2 D  z
用到工具:6 H- u1 F9 o( G
importrec1.6
% Z( B0 c6 P8 B8 U1 W1 K- r% \  Zod
8 W; t- B: i3 C, E4 `: p0 Oc32asm
. m+ u* W" P% ^( Y6 Z! x' i% ^loaderpe
& l) w) S! J1 l5 V8 q这里我们简单的介绍下,如何重建输入表: p4 b. r/ a* A0 l, q

' h  {6 w- {* \" e, C首先吧文件拖入od,打开inportrec1.6
0 R+ l: s, R* b% [# @3 Z8 H
' @' o( J, R% D+ Z如图 选择拖入od的程序,8 V6 h; R* J" t

) Q0 V* b: }9 g
0 J2 V' R9 l5 H7 Z% _' G( ]这个时候,我们打开loaderpe,
: i. m/ j  g: p4 s* D/ K2 d
& r7 L  N* X  s7 q9 [) C7 o+ J拖入我们的木马- z& \) N2 g: S) x" B' V

2 ^( g  X; O2 ]( w) d2 e/ P7 W选择目录,; a& J" c6 A6 U
* e6 w( a/ M. j6 @
我们看到导入表这里。。。
4 n9 k* O  W2 q6 N6 u' y; \! n5 O. E" V3 r6 P: }
如图:8 Z# Q6 C$ b/ t- M
, Q8 F/ r7 d% W; r3 j: c: o
  M& B4 m& x7 t1 A# R
RVA地址是0001D000  大小是0000154C% I, T6 i+ O8 i+ C

0 ]2 F5 f2 w* @0 q1 ^2 e# ?* ?好的,我们把这两个输入到import1.6里去1 F+ w/ U  n1 n1 G  B) B, x

; {1 B! E) s- _( j' c6 m就是在“加载树文件”那上面一点 ' Y: i6 B! ]+ c# y* U9 j) ]4 E  f% O

! O6 T2 m5 x3 C/ d输入RVA的地址和大小。
% f  S6 y5 G+ X. s' E/ k/ g5 V# I7 y- K- z; g" B3 f" m
点击“获得输入表”0 ^: o! l1 ?: q; b
/ I2 ~, U" [7 f# L" h) i$ F3 G
然后点击“显示无效的”
7 e0 m6 S4 K" {
0 E! K( {" |+ b' |- j) |9 B接着importrec会自动列出4 E" Y2 n- I* N; d$ C2 e5 H( A0 B
1 ]1 G% D7 J0 u* N0 B( A' R1 G
我们把深蓝色的字体  右键   剪切无效的指针) U2 k3 X2 S* p6 W

/ ]! E/ ]: ~; i/ }, y( _! {/ x8 ~+ x8 Y- R
最后,我们点“修理dump”
5 g* M$ K; N, {! \" r9 T9 o
3 q. l6 m; w9 r. P选中我们的木马就可以了2 _' f7 c4 `$ y+ \6 z  {8 H

8 P: q6 a# [! {7 [; P# @4 v最后我们要用到c32asm
1 V2 N  {4 w% ^# Z# |7 K3 j/ {8 y% r' r* n. i% k; H. y
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
0 [2 S' Z0 R3 t, w! I% {) S* L# u9 B7 R8 P+ H( j7 |
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
  F/ y# C" d$ x3 }
( c0 ]. ]6 N; Z0 Q' Q/ W这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
1 J/ T0 h2 [$ l4 |0 a2 |
. |: T: f" E3 c( K我们把马子拖入od的以后,打开了importrec1.6- A- G' w. g" f' W( f, w7 k" R. \

- L( @6 G( \: F. L4 ^在选项那里,选择根据序数建造输入表和创建新的IAT
6 j: @, A" |& R0 I4 u+ X! y6 ~* L+ U! l+ c
如图
% ?6 m5 f  D) E/ K2 I; E* A& X$ Y) i8 E/ M# Q. y. h2 w

; x0 [$ k: k6 D! Y/ j- u以后的步骤照上面的方法继续就可以了$ C  K' n4 F. F3 O, Z
$ V% j; R1 D, `7 x
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
0 T9 \3 D/ H! \2 _! s" O: d- j
: }" P$ ]0 H, j% g' E- g1 Q+ ], j因为kernel32.dll的大小不一样。% @$ o3 f' N; F

7 C3 B- J  ^. }- w# Y$ S6 G3.修改originalfirstthunk
4 N* F. ?+ c9 \  e. V8 G: C8 U! _/ h- u! F% F& e& n; {2 C6 e' B, s+ x
如图所示" {* w3 ~  v3 b1 U! }1 A' i
7 P+ Y' k) O9 q, b
2 i2 L4 V9 r  F# b
我们打开loaderpe,依次点  目录--导入表(后面那个横线)/ Y" V3 ^! Z7 _+ [  `4 P
3 O% P- O% _/ `4 G& u; s
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
: M9 g  R" j! Y5 r' }. A1 d4 m
3 G% D2 m4 ~0 r* [2 f  ^我们右键--编辑--把函数后两个00修改为FF
* p! v2 E7 ?4 T% ^: I
( a3 t$ ^- i+ B7 x这样可以过小红伞查杀。  虽然会出现错误提示
# r, z+ M  h) b: L; o, k. V' _& `/ E9 C' e( H
但是不影响木马的功能,不影响上线。
* \" G. Z2 }  N  I# L7 o
2 k. K; K8 R9 t% g7 J% j4.dll后面加20 90法过卡巴查杀
+ o# V9 B3 e- O0 b
4 u2 P. A7 P" ~0 ]. u2 F需要的只是一个c32asm而已,非常简单但却非常有效
" o4 a- |) f$ l8 X
* T4 X% H) `8 n$ ~! Z* g如图( \6 @! F: `) {8 D- D3 @
9 t2 _" o' K, U7 O7 Y
6 g+ J' c/ @$ Z5 B: ]) Z
3 b( R4 G. B, ~3 c, U, M9 t
我们可以看到,
( T% H* v8 y2 g: M( ?" ~7 p1 l* W: U3 I4 U7 a1 k
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
8 \& Y8 T; \0 }8 y0 {- k- W2 R5 f5 a2 Z% F' j
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection/ @6 z+ I8 J6 b+ l* I
7 x+ z% y& g- J* K
我们只需要在他的所属dll后面加个20 90就可以了
/ e2 d  e9 |# T4 e; n3 s, |6 \6 e- ?  C6 c; p
卡巴目前还不查杀此免杀方法* a3 |* m% @  L7 l+ n- k; F
" W& l" y& y- `

" y7 Y# P) i7 I唧唧歪歪这么多,打字有点累了
: d( J3 \; m6 v& b9 W+ j! X" t2 \1 E  a8 I/ }* d$ @
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
+ R6 r, i, K, N5 l4 a) P& O) C4 u& `- F/ r
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表