返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
2 n8 x. ^% h: k4 m9 }9 A7 H; ^) k- g; G
特拿来分享给大家。2 H( U; W6 x& M. O" c% S
0 ?) Z6 H) l0 t+ Z
今天我们不提我们国产的那些杀软,真的垃圾的要死,4 G7 I2 I* K7 \7 D' w
' _; f* U4 z" Z
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
! J" a9 _8 G/ y4 J! Q5 p7 {% O7 ~8 X, O$ K4 O1 H. Z( B" X
我简单的重建了输入表就把瑞星搞定了,6 X( j" Y9 j2 e% b' d  T

; B, T, ?2 ~; x' `5 c7 c失去信心了。我曰
* W: l8 F! o& `  P+ _. }) t
4 y) U7 ]# @! F3 _  o今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。: e) u6 d: b$ a8 {
9 ]' `' N4 O. w. {
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
! }/ L  K# e+ M/ c& o9 X& P$ t: ?5 v- x  c
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
# h' S: o+ j% N1 j% V% b
  ^# Q' {' B2 _! B高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低: r' L3 H' x# e& e, u5 q
8 E7 h% D4 u/ e7 k0 U( H
过了以后再调到最高,再做免杀。
: _( z$ Q9 H1 }8 c5 s+ P  ~, |/ I( s  }5 A1 {1 e
以上是废话,6 ?- T! J' C( |
% K7 ^$ S0 K2 k3 r4 z  e
好了,下面我们来说下常见的免杀输入表方法。  g" O3 F5 B8 L2 n: A
- ?7 ]+ o+ a) V) R; N5 T6 ?
一。移位法* a! r, R! @0 ~& ]5 e0 E, ^

: A+ t+ s0 c  ]( a; Y这个已经过时了,我们的国产杀软及时的跟上了时代,  c8 \8 l! w' E
0 {5 n; f( i4 I2 S
移位法在去年过金山和瑞星,还有江民都是可以过的,
3 s6 E- T/ K' D+ b0 H
. q) S" n$ n5 u9 I1 p* C现在的杀软智能化了,移位么?呵呵 ,追杀你。
' _5 f, C  k  f# v7 e: E. U. Z% V5 w3 q# b) B; {4 {
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。8 z* |! \" x( P9 K6 t
  O" j  r5 ]4 A: g0 ?1 S
二,重建输入表" m2 W3 k3 _; j* J0 J

* `# _6 |) S9 |3 |4 s: s# C, Z效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈( |3 Y' Y8 E9 Z, f; F

  |; Y0 @& x' t- n$ Q2 p3 g& d5 R- k( ?这里我介绍下,
$ [. ]; n, i0 g) [( k* ?; K" b: G1 R) ?
用到工具:
. p& i& D6 }' `1 |: Yimportrec1.6: n( p7 Q: B* z1 H' f8 [
od/ \( P; r7 @' p5 F0 \! X) D7 h, L
c32asm2 Q$ U0 ~+ l& [2 I
loaderpe
! E% M9 r+ T' u. j# \这里我们简单的介绍下,如何重建输入表, Y3 U( \6 i' K3 r
* t! E- X7 c' D3 B5 Q0 [1 Q, j
首先吧文件拖入od,打开inportrec1.6& k1 j9 X) G( d& k

0 [1 I9 q4 M7 [' H# }如图 选择拖入od的程序,8 ~9 E" }' M# j7 I7 N. p! T1 ?
2 s4 K$ y' k! Y1 }8 Z6 [) i% U

( G" Q- |! V! l+ v" R# O! A& L( q这个时候,我们打开loaderpe,4 U! s) T: m2 A3 D
  r* W: m2 |" f
拖入我们的木马2 c- q* z& g) V7 m

( p2 g; f1 d% {选择目录,: d' N! }6 V2 j6 m, S. q. h

/ f' N9 W8 S5 o: k我们看到导入表这里。。。
7 O, P- l+ g2 d' y" V, ^
2 G: W( _- ]! H; n2 Q如图:3 N4 R( E* R) L# j/ [
" U( N% b+ \. L6 C+ y7 W
0 u# ^& w$ _) S1 |$ C& R
RVA地址是0001D000  大小是0000154C5 [! U  x4 N3 T' }; z
9 t* l- V7 q% o; t) b
好的,我们把这两个输入到import1.6里去) r7 x- o+ s$ k& S# u; ?

+ O$ C% b7 D% L" s就是在“加载树文件”那上面一点
, h# t" V' ~: y' ?
& W* v5 G7 v: H' s$ ^+ q输入RVA的地址和大小。
% P' _( t6 [8 t7 t& ^
. l  I, m! G$ a0 {点击“获得输入表”
/ m1 Q0 R1 i" F5 c+ a' A* Q! ~2 ~6 W* q% Q9 F4 ^1 [
然后点击“显示无效的”
5 N. k* p) o9 r- \+ B5 G4 c6 @- ?: e( Q& X7 [) t
接着importrec会自动列出
; I3 O( [3 `5 J& S; i) s8 r  n: s% I: F
我们把深蓝色的字体  右键   剪切无效的指针
4 Y1 `: i* O  ~+ a: V+ S0 [+ d7 @" K0 d, v2 a) `

! u- `( ^) h2 D7 I* h最后,我们点“修理dump”
/ W: o: m9 h. D1 T+ r  [" o6 u6 s5 A: a8 N+ m
选中我们的木马就可以了& U9 A# e+ L: i2 Q+ {. A" [

& p2 {. H! `) K$ g& F0 A( o, c最后我们要用到c32asm
& C; m- L& z6 a& T4 Q
, H! f1 J  A2 Z5 _4 e! H; Z9 [3 W6 J我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
& W0 W' \+ Q2 O9 v
5 h, a* g2 k5 U8 H1 _) b; x% U这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)/ ~8 G! I! ~& V( f
! X; Q% q3 I% ^9 f2 n% k7 x% @
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
) N$ [( L2 l0 m1 X( x" c$ e+ G& R, z( e
我们把马子拖入od的以后,打开了importrec1.6) T/ G$ V8 v; x3 B! L/ w

3 Q* b+ q7 b9 u. ]( v. U4 _* M9 r在选项那里,选择根据序数建造输入表和创建新的IAT" L) B3 J" g6 Z5 g  e7 Q6 Q

% q0 S4 \4 K6 N) f3 c0 x1 \" |" w如图
/ t- m3 W4 a* T" `
1 p$ \: u2 U0 _# f- T! \* E
/ G9 H$ `. Z$ e, b0 r以后的步骤照上面的方法继续就可以了
- o2 x# |- q/ Q; [) X" o7 J
) W2 n0 f4 k9 @6 s( \! ?( {) ]不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了( o1 {) i2 l5 W( ~4 T% [
1 o5 S$ T: ?% f+ `$ s
因为kernel32.dll的大小不一样。, j3 L" u: i/ \2 u. S( J
& V) p9 e! T$ d- {5 r: f
3.修改originalfirstthunk
/ e8 ]7 J  B+ V, n
0 ~- M3 x. P3 T  Y如图所示
  v/ K1 v# ]4 C( q4 k; C& ~; ^0 R8 i2 \, _/ H. Q

* M  I6 [0 b  s6 N5 u* Q我们打开loaderpe,依次点  目录--导入表(后面那个横线)7 x8 D! e8 I" w  j3 p2 Q, c+ |

$ \# U: J& D" u* I& |  d我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll5 H( G& c6 Z1 ?+ J4 e* m) U. n! t
6 K- U5 @& }( S$ j8 N  t
我们右键--编辑--把函数后两个00修改为FF
, f$ R: h' q: {& U- o3 P6 j" m$ `) ?0 R  H( ]
这样可以过小红伞查杀。  虽然会出现错误提示
2 e- R. a  ~  A. a+ i! Y: v1 s& C" ^, a7 |! H7 g& `+ Y- @1 m; j
但是不影响木马的功能,不影响上线。
* }- t5 i$ h9 {$ s' r1 H
) ~$ d* {1 t0 A: Y4 A4.dll后面加20 90法过卡巴查杀
9 e+ l$ q; Q; K( }/ ^
, g) v" s6 k. i需要的只是一个c32asm而已,非常简单但却非常有效# G( D. t  P. z; t& w

6 x0 Z: S- S2 ]. \( Y如图. p9 C# J% L3 E3 }; k$ a0 `
" a9 j6 r4 t. A$ V, ?& r, A

7 v3 Q+ |7 \1 ]9 v
0 X6 E$ v* W2 W9 g6 ?5 L我们可以看到,
7 ~% F5 Q1 W7 ~/ E3 ~: x  }( m: D1 r: `1 g8 @0 B) R8 g, E0 u7 L; {
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90. h: c% f8 Z/ M+ Y! n1 V

' ^& D! @! P+ q$ b. J' c( V& d6 H2 F( h这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
% u9 A1 m+ Y7 G8 b1 F. s. v0 M: \; k
我们只需要在他的所属dll后面加个20 90就可以了7 L& }( y5 @; G  M% A& ~4 P. L5 f

; Y& O* c- e" j& Q卡巴目前还不查杀此免杀方法  j# v" z; ?8 d/ r" }5 t/ L0 ~
% h9 R7 y6 I) u6 Z7 q; W" w% ~
+ }: p( M4 T. F
唧唧歪歪这么多,打字有点累了
: |4 r2 X( S, R* |  W. M# C: w$ A, \: s" R0 I
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
* c5 I: k5 Z: l$ h7 O: o9 n, |6 f& I" S) _
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表