返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
- W; z% x" O4 `2 C# `' R& ]' w1 P  X# \8 x0 C+ L; U4 F
特拿来分享给大家。! {5 x* u; a! g& ^& O
  v2 S% v4 J) A5 f2 ^4 A
今天我们不提我们国产的那些杀软,真的垃圾的要死,8 a/ c; R4 {' x1 b8 D
0 k( C% R$ f% l5 r/ k
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
2 E( e8 Q: _  m& d$ N; e! f/ l6 V8 u# z# b% i
我简单的重建了输入表就把瑞星搞定了,
0 r8 d; ^, g* n! d! u7 E. U( m) w; W2 [- p" p) m3 b9 `
失去信心了。我曰% f2 ~8 T2 d/ q4 ~5 M$ a* D6 g
! q7 C0 @, j' x/ d% V5 R
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。) [( x3 U$ R- t8 u, Z" v; X( U
/ _8 o% V+ d( o9 J+ F
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。& v* X! l0 V, X7 d" N1 N

" _2 D- w( l8 ?. v. w. R外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
5 W3 L- J2 @) K/ C) R/ y3 h  z3 a- p+ k+ o, k+ m- W
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低+ ?1 M& j2 v7 ?% K6 F1 {; m' w

* A; q  j+ v. y6 j5 L& u# v过了以后再调到最高,再做免杀。# T: Z4 T! c! {- N  ^

. A1 _* }& I6 ]: P# R3 Z' f; j以上是废话,
7 v' s9 L3 U, m. n" p/ d
7 A: }7 O7 C9 a! w好了,下面我们来说下常见的免杀输入表方法。; b, U/ X+ s0 p' y* W
2 J( {2 z2 `6 k9 i
一。移位法! B) B+ n+ }# `  v* N  W+ B( L+ s) E$ v
( D# a9 m6 z& a0 g. m( j
这个已经过时了,我们的国产杀软及时的跟上了时代,6 H0 _- `( Z/ U7 P* O5 T
: l+ l- \7 p# [9 C, W4 N
移位法在去年过金山和瑞星,还有江民都是可以过的,
" v; {+ d- [. `! r$ F, r# @
/ N0 b! V, s4 ?* D现在的杀软智能化了,移位么?呵呵 ,追杀你。+ Q, ~" I3 d  f: E+ S2 E: t

& f; p: q+ J' m* ?3 B如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
. j! Z* F2 X) u
: u) O$ N! y% [( U( z( n二,重建输入表- ]' v" ^8 p% o  B7 q

( [6 O9 m: _/ T. c2 J& y- R效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
" w+ d! |$ Y) _" H" f# L( l6 G( Z+ r- C2 f9 D& C8 s2 l" g
这里我介绍下,- \" R0 d  V0 }8 ~

: v2 E- ]" g  S! h2 B! P用到工具:7 p" K, p, K4 u  w2 m$ x/ [! V0 z- X0 _
importrec1.6
- R& N/ `0 k! n* S* G  Jod9 P8 R+ S8 N% {9 B0 E+ E4 D' Z7 J
c32asm0 u! U7 ]2 v7 U3 o* S
loaderpe6 A) \7 a2 ^. N6 Q1 P- b: p7 ~
这里我们简单的介绍下,如何重建输入表; i# n  W+ E: K' M
( X* X4 R% Z! n9 p% |
首先吧文件拖入od,打开inportrec1.6& d7 v9 h$ z7 x' Q5 H

% q7 U1 Y9 f3 T% T4 O如图 选择拖入od的程序,6 Q  W9 ], t9 Z  T8 |$ _+ a2 p. A
  _9 V" [- ]2 X6 k" j* q0 P

6 `$ A# ~2 W& u. w2 y4 a这个时候,我们打开loaderpe,# M4 k# A4 A! o1 I# F. n
, l5 w5 I8 q2 k1 F2 b2 W* D% L* m
拖入我们的木马, Q* |7 w1 X1 h3 f- }
) |3 p2 L3 g; P1 ?9 u6 c# n
选择目录,2 h$ D' G) \* h8 v8 G* o- A% J

( _4 y; X, q' c1 l. s" s  T我们看到导入表这里。。。
% f- W# U/ V+ x* |& {7 b' @
* }1 B% V! H5 G8 P+ _4 a如图:% L3 G1 G* N* |$ U6 X$ n/ B- d

' A( s/ P7 Y. e( n9 x/ J' _. U! }$ V5 {" [& {7 U
RVA地址是0001D000  大小是0000154C" A9 z! s' u& }

  E, }) e0 d* r" t( e7 r好的,我们把这两个输入到import1.6里去
' w! [' C+ @9 G2 h6 L8 v3 P! x( u% h: f( K
就是在“加载树文件”那上面一点 # j0 P. |4 v8 N4 c4 H' x- v

3 |% V' C0 w( w: r6 r2 Q输入RVA的地址和大小。! L' J0 v% C1 [  i8 l0 [% L

) |0 i2 F2 D0 d* K2 l点击“获得输入表”
0 W5 T+ O% ~$ j' g! l) q& \
7 t% w6 Q& M" w" l- c! y然后点击“显示无效的”2 |7 M6 I- A& G) x$ s0 x8 ^# a+ m: b
7 M: O1 u* }# o/ R& F8 M/ f
接着importrec会自动列出! O6 C$ {0 H: R8 b: @9 b, d
8 I* I1 B4 M' Q+ J- u5 C
我们把深蓝色的字体  右键   剪切无效的指针
& y* P; c7 t8 B9 Z( y
0 H( j# I5 R( s/ @- n( `  ?  c: w* f/ V: y+ t
最后,我们点“修理dump”
: ^3 p; H# k0 N) ^5 f. I9 |- Z  Y( R1 z. P% {+ R# l
选中我们的木马就可以了
( _& r5 z) l: ~$ u8 }$ ~5 ?/ M: M# ]
最后我们要用到c32asm
: g. `3 p2 u' ]2 w( }. r; n( f% ~8 p8 Y
: ~& j6 h3 D- [% w2 e我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。% j' E1 o% L6 \7 z

7 w7 G8 Q$ Y9 l这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)  @3 H0 W; n  l: K# \  z

: l7 Y3 m$ Q: \% F这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,8 L, _9 W7 e3 Y/ |8 s& S
* I) g- b0 K7 R* P
我们把马子拖入od的以后,打开了importrec1.6
5 a" r9 c! J* Q" R* i2 f3 \  T
" ~& M( p6 i/ q- C3 q- A在选项那里,选择根据序数建造输入表和创建新的IAT
  s3 G  z+ l3 Y8 c0 x. y( r% e$ Z7 |/ V  O- b- l
如图& _7 h  ]! K- v

# O/ ?" v. P. w$ \( E; `/ C
- J1 ^: A- z% A* V以后的步骤照上面的方法继续就可以了" I+ [& b0 K* C+ t. _

" a# \2 u$ h9 I/ E不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
, a% L8 o% M9 C# h2 @: S- D
) c: f7 Y8 E' f; ?$ s  e5 n0 g因为kernel32.dll的大小不一样。" U" t! G! _( M
6 V& y) p3 ]+ A  T  P4 D3 s; C/ y
3.修改originalfirstthunk
2 F7 l' `6 I. ?. ?/ }6 M0 U) p+ G! {) s, E. `! P# D
如图所示
! O& R5 j; i* v7 f1 X
; f& P3 e, {& x( B5 c! A4 B7 X( H" _8 y. K- v8 P& d
我们打开loaderpe,依次点  目录--导入表(后面那个横线), J) g3 b5 H1 `* _6 Y1 G9 v2 U
- s' N( d3 R, H+ Q9 Y
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll, q# V) l( x& B- q

+ H  O8 O; @  [, [/ I我们右键--编辑--把函数后两个00修改为FF: [' q+ B) O; g- \

( [4 W- X+ t& A6 Z/ S这样可以过小红伞查杀。  虽然会出现错误提示# {% `& X/ V, X8 E  Q- R
7 C& C) G1 I7 C. t8 ^! Q% p0 J5 H
但是不影响木马的功能,不影响上线。
0 p0 p. G- M- a( G% O4 \; _5 A% ~' \& ?0 m
4.dll后面加20 90法过卡巴查杀
" Y8 a  e0 a& K! o6 Z' L/ o- z
+ v: r! G) z7 T6 b3 G需要的只是一个c32asm而已,非常简单但却非常有效
/ J; z. H8 k4 r  m  u% u3 [9 o1 q% N  u, x
如图
! o  O4 k& K, `# y3 S; X
% `: p1 q3 ~: W8 t5 H' B1 e* e( }
5 B# h2 C7 C; S! }% O6 {$ s
. i2 ]2 G* n' }- f/ {我们可以看到,
6 T, x- ^. s% b) \: Y1 L6 E7 f5 i0 f. `
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90- Z0 v' g# H# W0 T; h
) e9 X" _/ ~. }! I* }
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
6 n4 I- W7 }5 W+ H2 W
( x; U% o8 c- n8 m- h我们只需要在他的所属dll后面加个20 90就可以了
  C1 s* B% }/ u) Y
8 U& l! A1 G0 y. r4 o2 m卡巴目前还不查杀此免杀方法* b/ c8 k4 d& m  e7 _

# n" S8 a0 Z4 {. Z) a# M) E/ e8 I# K$ p( g# M) U2 R1 Y
唧唧歪歪这么多,打字有点累了
: Z" b1 ~) D4 c1 z& w4 L" |
. V0 U' {! {) `) x3 s3 C以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
7 ?; [, }4 M+ z+ v3 C4 g  z2 {
2 m( i# O5 e( M! u6 p. `+ l[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表