返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,5 \2 j/ |2 I2 U. ^# B
& u0 `- @. K% G; d, |
特拿来分享给大家。- K" c; N: E6 K0 f1 e. d! s

: r; l* Z2 c- O( l7 C# X, d今天我们不提我们国产的那些杀软,真的垃圾的要死,( r# C! p. m& o! s% M7 y
7 l3 Z' I( s( S9 q8 Y' b
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
3 j& E5 P, |0 S
, I0 Z" ^7 ?& a! B; f3 x' d. O我简单的重建了输入表就把瑞星搞定了,9 V3 z8 S( S5 y! l7 y( T

( y( W' j8 S; A* a. _; o失去信心了。我曰* @, z) k1 T7 c. C8 [) _
  Q2 b% g+ K4 j8 J2 I
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
* r3 ?) }( c+ }! p) O6 O- `2 g& v! ?( B, K$ B4 n% ~7 B* U" x9 Z
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
: [* E, {3 ^  O
& e% R- M) K( F# a" i  d1 w. z外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
. H" Q$ }+ {# ^; ]7 ]; j# }7 j% h  g& M  X* N
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低  ?8 H# b0 ^5 r- H- @7 [6 Z0 E% H

" e- ]' r' h* R! |% z过了以后再调到最高,再做免杀。2 W( z* `) N. p9 t1 q5 R0 e

% p, G1 u" E; `  l& m以上是废话,
* o: S6 n2 X# Z  Z% ]- S
4 n! E9 t$ L4 @( i  h" h5 }# y好了,下面我们来说下常见的免杀输入表方法。+ f* j, r9 j/ X

! ~' T* z+ `' {2 p$ c7 h+ i" l一。移位法( p/ \! A- |" I
) f/ a. Y3 {9 v3 ^* C
这个已经过时了,我们的国产杀软及时的跟上了时代,* d) X3 Q; C4 ?7 o; m; g3 x

4 j4 J3 Q5 v# I* ^- t移位法在去年过金山和瑞星,还有江民都是可以过的,
0 E3 n- Q8 V2 J  ]& I9 y) Q6 \: Z; ]/ |3 B2 \
现在的杀软智能化了,移位么?呵呵 ,追杀你。4 o8 V& J' F& b! C/ U9 W' j
& Q! ?4 {& j6 ]6 W
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。: K5 F5 _* o" v. n
# Z( J4 B. [1 w% S
二,重建输入表- \5 O+ {. v+ p% U- v' I
& w9 h7 F1 Z5 L# ]
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
; R$ e( g! J0 `) g- X
: q8 ?5 U# }5 a8 L# w( l9 H这里我介绍下,
* u' o  g1 {: r- f# H
; @7 V' g% @" h  v用到工具:
/ }$ w( w; C- R0 Q5 A& _* u0 j" h8 timportrec1.6
( M* ?1 [0 t: g( Zod1 N# u8 O. _% f0 C5 t0 x% a, g  c* u
c32asm& n" X3 ?3 G) }6 l/ ^
loaderpe
# Y# N6 B3 q2 A' H这里我们简单的介绍下,如何重建输入表
+ P. Z7 ]8 q5 W
/ U* x/ J# j: K4 ?4 K' @+ J. r首先吧文件拖入od,打开inportrec1.6
5 E: n' q" }1 L/ @% Y+ H# I7 z
% A& p/ }2 s/ y9 U4 B, d$ R如图 选择拖入od的程序,
& Z' Y% v) Z- Q" F" B0 `' a5 v3 V! z+ q' ~. x: d& @; {

% K: H/ X2 \7 h9 q0 i! U  p  C这个时候,我们打开loaderpe,
9 s+ }* M- L" J4 D2 _1 @
, K) L% L  v: r: m# Q% }" J& D拖入我们的木马  p0 v# R, U1 w" ^8 \. g/ l3 i' I

4 E0 P8 a6 [$ @& _选择目录,
# x/ Y' Z0 `4 Z8 E6 q! c1 Q, ^3 F! G' T
我们看到导入表这里。。。
. u: W/ ]( A& g9 E" V  p4 ?
) O" \+ z; f/ E" ^/ o( p, n如图:
# K/ }! u, D9 R, [: g) u4 @  d0 m- M5 L8 c4 _/ x6 _

7 A6 B1 ]% y. e. K  n7 {# LRVA地址是0001D000  大小是0000154C
& k2 q# t4 w7 w. ^( P- m
0 L* H3 L: Z: V2 g& K; d好的,我们把这两个输入到import1.6里去
% T4 d( m/ Z) i* [4 R5 G. M
7 f4 Q% n  R9 V! ]就是在“加载树文件”那上面一点
9 s% c* s2 h0 |9 O  ~9 V0 m/ H! h1 O* r8 {8 g3 h3 e+ a
输入RVA的地址和大小。
/ C; _( v% C; u  K& U
6 d( b. N2 T% F9 t点击“获得输入表”
; r1 W9 h" Q8 v1 g& K$ ?0 x; e! T4 K+ J) v0 {3 C3 H
然后点击“显示无效的”4 Z% c1 [' v  N9 V# Y# J

- t- i& W- f& M. O" g9 K' g接着importrec会自动列出/ B, ]0 I, R. @; X
1 V4 K9 O2 Q: W: {
我们把深蓝色的字体  右键   剪切无效的指针! M) d7 N  s; I* A: ~

! _# ]+ b- J/ [# z  ]& R5 D4 b9 [& ~) C
最后,我们点“修理dump”
# X- K2 f/ a/ C( S* \
7 P2 n" l9 H4 M. w+ v4 p2 d选中我们的木马就可以了7 C3 G* q7 N$ _  T

1 Q- U" P+ }7 k& G最后我们要用到c32asm& B$ N) n1 a) ?5 c! y5 |
# p  r( x4 ~+ a7 G) g: {1 e! v
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
1 q8 F. k8 h; r+ H& Q, T9 ?
; e" o0 ^; }# b' R/ Z这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)+ q+ L. O  V" X" }) `. E
4 l6 F% f0 N0 p
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,& L2 g& S8 K, `

6 L* v9 Y# l6 S; X我们把马子拖入od的以后,打开了importrec1.6; j3 n" t( q: x( E; M7 I4 O

0 x1 j, n' {) |. {- O在选项那里,选择根据序数建造输入表和创建新的IAT
$ S, g* E7 Q+ W# Q
& i. q" V8 k$ }) j6 {. n( x4 i如图* j8 b6 u  a# D4 N$ `1 N) F' V( x
3 N, M* u; }" h% k6 [- U

4 k9 v4 b4 r/ S, M4 Q以后的步骤照上面的方法继续就可以了
) b# s+ [: S, z  E: i4 y
7 {; L' k1 z8 i; y9 d3 h* H不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
* G- a. Z+ K6 {' d# A" f! H
+ A: ^! H( I+ J+ ]* \$ E- B" i; ?因为kernel32.dll的大小不一样。
9 @7 i& S9 N( {* {( g: w) Y
+ h  h; Q4 y; W- M3.修改originalfirstthunk3 M3 q; \; n4 B
9 b6 c9 q8 z+ V4 ?
如图所示
3 N4 I" K' r7 \# m; e, q
: S7 G5 j) y# q9 q- D' V. E  f! G1 B( f5 X
我们打开loaderpe,依次点  目录--导入表(后面那个横线)+ ^  u8 A% Q9 d* H
7 W7 O1 X. r4 a& Y+ g! f
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll2 T4 U3 C# L3 e

" U" O9 t$ S! F) l我们右键--编辑--把函数后两个00修改为FF- V) S4 s% [/ n5 C* o" m
0 B* _! j) ~' @2 v* N
这样可以过小红伞查杀。  虽然会出现错误提示, _1 i0 s- L+ A$ K6 }
* O/ _+ A8 j) V. J2 ~, U
但是不影响木马的功能,不影响上线。
" O& `3 D6 F# l7 t. M  g, ~; t% ?. @# p# H8 C9 O, i
4.dll后面加20 90法过卡巴查杀7 ~/ Q2 R3 a& K7 q' ?# J

6 w; l3 L4 Z: s需要的只是一个c32asm而已,非常简单但却非常有效8 b' x, m% p, ?0 Q' {% z
( d4 }; _" }/ }$ e! i8 E+ c' z
如图0 J% I$ ^9 L( S! u
! F4 C  u% _. M/ Y

1 }9 k) ]( ~! u. y8 s' q+ }6 M) w  Z5 Q
我们可以看到,
' W5 ]0 I8 B5 `# l9 g0 _. A7 f: W! x0 E5 Z
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90$ I& d7 |# _1 D) D) x
9 C$ k% n5 y  z' `6 P
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection" L2 H0 Z* |+ \' I: n
0 c$ A/ n; `0 i, E2 t! h# P2 ]% n
我们只需要在他的所属dll后面加个20 90就可以了
2 T/ k+ e9 [' w+ z, \
9 R4 W1 J6 _) j+ W( H卡巴目前还不查杀此免杀方法9 K2 F2 }4 p  G$ W1 {2 s

4 H: `, n  u/ j1 e5 F  A- y, ]) n1 [/ o
唧唧歪歪这么多,打字有点累了7 t7 U' _" l9 q+ a
* b  w' D: K2 e" K% w, H9 `
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
6 D- {2 T; m, j$ O. R! o0 c8 p( h- |$ J& z9 v2 W
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表