Board logo

标题: [原创文章] 木马免杀之免杀输入表篇 [打印本页]

作者: 1335csy    时间: 2009-3-31 11:30     标题: 木马免杀之免杀输入表篇

最近和一位木马免杀牛人交流,感觉新增进不少,
9 O! A/ b1 g& J" h/ I: [; l& s4 K
' A9 s- ^$ [, j0 O9 }4 |9 J特拿来分享给大家。
' J- S2 m" u( G4 v9 S& ]+ E/ ?2 N7 b+ B0 n: ]6 A) y) b( F
今天我们不提我们国产的那些杀软,真的垃圾的要死,
6 k: L2 A. N3 Y# }$ I! f1 \; I! f7 l  d# j" u3 o# h1 d: y
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
  n' ?4 ^: p. T8 R, S, U; Z, {2 I8 W, @6 T( U0 [: L
我简单的重建了输入表就把瑞星搞定了,
* u4 Y/ t. `9 T2 v+ l  o7 n
+ p1 r6 \4 }% ~- O6 ?1 P% _* m失去信心了。我曰- s5 |9 X) m1 f' V9 Q' ?7 f8 n- @

' @1 h6 P: t+ w6 |0 S/ ~今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。  `/ o5 A- d* k. o

0 f6 S- K* u: T7 y首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。/ e6 N* h# }2 o! q. R
5 l8 p- W- V0 i- \
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
- I! L' H% y4 |8 H) ~0 b
  ?' d6 x& i7 f( D高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低1 R( A& }& O# N/ `0 j$ V
. K/ i' F8 _! F- }6 S# |6 \
过了以后再调到最高,再做免杀。0 X- k$ `. {+ C: A$ D  Q8 B

! l! }2 K2 o; U3 \以上是废话,
# d0 X4 N  H' t4 ~/ t  o, B
5 A# i, Z, x& P/ [好了,下面我们来说下常见的免杀输入表方法。
4 w* [. N7 S1 u7 O$ h7 E& o' d- U' c2 I+ e* b# f: J& l
一。移位法
! Z4 {+ Y/ v0 I  w6 f+ f
( T1 X" X+ W! D. B% S* a  d" T这个已经过时了,我们的国产杀软及时的跟上了时代,0 r* f4 a3 W! a/ P/ E

4 b: a$ E, n! v- f6 ?4 H; j4 s$ ]移位法在去年过金山和瑞星,还有江民都是可以过的,8 i% Y$ h& b" H3 c* d; t% |# E8 u
) D, m# g  \9 `. ~, E% K. b1 N4 ]1 K# H
现在的杀软智能化了,移位么?呵呵 ,追杀你。
8 i) e5 c: v' E3 L) m1 W1 ~: _
( t4 |9 e2 N: H3 K; B1 U. V6 v如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。! b- }/ b+ A4 w' [; t
' |' F8 N" r6 ^  u8 `
二,重建输入表
+ N. C) l" I4 s
4 e% a# u, Y# ^- m, E" r% i  ~) a" V/ c效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈, K+ Y: B( L7 t0 u9 L5 q' s1 ?9 n

* J9 T7 U8 D* C# \3 E  N. E" h5 G& P这里我介绍下,
" B0 ?5 T' l+ ]  q. v5 [" Z! i" _" U) f& w8 i
用到工具:
- F# o" M6 r- k" q6 wimportrec1.6
% Q7 h6 P2 w; r+ lod2 l  _4 d9 \( M
c32asm7 h: G2 f" i: F" F( O  j" O' B) s
loaderpe
- J8 U& G/ G* \# l# z" J这里我们简单的介绍下,如何重建输入表4 }) s* q$ _0 r: Q+ P, |0 S
5 _4 I" _. E% y' ~1 o3 s
首先吧文件拖入od,打开inportrec1.6
1 ], O. o1 z8 Q( V/ z* a. }9 p2 A- H7 y, M6 r) s
如图 选择拖入od的程序,
5 R& P% q# J* T3 T* [  Y! j& ]7 P: W8 A8 ^4 L. @5 L) G

  y; D% D) f1 c( i' q7 |这个时候,我们打开loaderpe,
& `9 F  r! B& n& \
( l7 H/ X8 y, d9 h0 i拖入我们的木马# ]. Q: e% Q3 E* @7 _+ I0 C  ^1 f  b

3 @' I$ Y& x% e* T选择目录,
8 N6 _  q$ Z# f) s% I/ a
  B" ^1 e9 r2 F% [: R/ g9 n我们看到导入表这里。。。/ m8 s* W  w* r4 ]
: y3 ~+ e4 h3 X% F7 `8 [
如图:) J2 L. _* R0 J3 H! A+ p' \
2 U  b4 B. F* i' O' M$ _! ^$ i( W4 ]

' x! Q$ m* w# O% V3 F; E- _RVA地址是0001D000  大小是0000154C
/ c2 }6 c  X+ p) K
1 Z( r5 _  z" K/ V4 A0 t" ]好的,我们把这两个输入到import1.6里去
& L- K5 c6 N2 y5 V0 `/ m1 `+ O5 V4 k$ c/ a* U  i( a
就是在“加载树文件”那上面一点 9 e- J" Z$ x! d# J
9 R5 R0 V' N5 H* e( U& ]& u0 O
输入RVA的地址和大小。1 i5 f1 |9 A; r9 d
8 F& {6 J7 r6 r
点击“获得输入表”
. [% B/ z; o5 H  I7 `( Y% Z
4 K5 s4 R) ^% H  ]4 O8 V2 R, f5 E然后点击“显示无效的”
. ?/ u) z4 L4 T  S+ C: D! ?3 C$ h! r
接着importrec会自动列出
* v) L: N/ U0 M$ ]; P  L6 u; R3 ?
8 S" D2 ?7 b" q) ?8 f' @, x) N我们把深蓝色的字体  右键   剪切无效的指针8 ~8 I( ]% @- a# y8 H
) u/ |8 k6 P! f* _: j

# N. L: \8 U+ I- g# _( c( n: m最后,我们点“修理dump”
1 Q6 c, D* B$ b3 J' B
: u$ V! a+ T, ]- ]& b选中我们的木马就可以了
3 d0 _/ \+ d4 Y7 _
" ]+ o+ v- m6 m$ N( e# Z最后我们要用到c32asm8 C$ o/ M1 g, O6 Q7 |. _
1 t' g& t5 @2 V1 t% H! u  p
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
7 n- q9 k! z, l4 E5 I( n% k0 @: x$ C' O
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
9 k+ T) w3 i+ P) U: [% p
& m1 O$ k) N& q4 k, F这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
6 V' y7 Q+ r2 d: Y8 A, L9 L; Y. D" [
我们把马子拖入od的以后,打开了importrec1.6
7 q* c- E# S0 u' K% ^
! Y  p& f2 e6 k* @9 P6 G+ U& x在选项那里,选择根据序数建造输入表和创建新的IAT
. U8 f8 w* I& h' q- C5 L3 c* y
$ z1 I6 s7 t) D# G( |8 G- t如图
: F2 q2 ~* ^$ h- M! f1 d. e# f5 j0 [" J

4 g* L+ [- L3 e/ k以后的步骤照上面的方法继续就可以了
( t" s' @; T- N) N+ l9 e' c
5 X6 @! ?) ^( X% \, \( {不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了9 A. s' K" k) S4 R+ J: u: }! s

2 g" l) K6 E+ d/ w因为kernel32.dll的大小不一样。
  X* o! q& A) P7 @- v( ]3 V1 u& M7 P% |# q7 a
3.修改originalfirstthunk
; ~, T: w/ N  p
4 @3 C8 M, N# x5 X2 {$ d. Z7 Z) f如图所示* v% L+ e; W( l9 f0 z8 y6 Q# ]5 a

6 }6 ~' S- D5 G/ _; p" T/ g2 ~4 G& Y" ]" U3 s6 ~
我们打开loaderpe,依次点  目录--导入表(后面那个横线)! b- \/ T" ~3 L2 a
# A# x* l, n1 z$ f
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
" f& e! W) A1 G8 V7 [2 j. |
/ C; p* \# [; Q8 h/ ?我们右键--编辑--把函数后两个00修改为FF
5 m' ~# s* h* D  P# |) G- `" u8 E+ n/ |0 ]5 S; j* p; l
这样可以过小红伞查杀。  虽然会出现错误提示- T0 R: ~# x2 v8 L. c: L

; `; C6 j- \4 j/ d# Z但是不影响木马的功能,不影响上线。( {* r- t; L1 H6 N
6 j6 T2 M# t# d1 ?4 Q( `
4.dll后面加20 90法过卡巴查杀
+ m" E( L5 I  ~4 {+ {. h
6 O4 l% C+ b/ j  O, w7 c5 [. B0 Y需要的只是一个c32asm而已,非常简单但却非常有效
$ M) s' V8 W$ @( E' T/ d4 r  T% p% Y4 q1 Z$ A
如图
8 C! m1 _5 i/ D# U& R$ j# A
9 c1 }4 O3 z( W4 k$ {& x  ~5 `7 u3 r2 L; {; F/ B; F5 T6 h5 Z" \

& R" j! ]  r' g" L( [我们可以看到,; x) T" f. ?# \" w$ w, `) \( k
. d5 s0 G& K# S6 ~4 }
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 905 e& N% X% X$ l
6 N5 x8 N8 ?5 g
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
' K6 h4 g; W# J0 w
: ~+ {& G* O1 f- L我们只需要在他的所属dll后面加个20 90就可以了$ i- u% L) C( s" c+ h( T  W& N
2 E" U3 Y( h- M( h/ I5 p4 q; ~
卡巴目前还不查杀此免杀方法
/ J3 F5 c, K7 k* \1 O: R+ U9 ]; h) a7 t: |! y

9 Y+ c! m9 J4 |6 e8 ?5 Z+ Z" O唧唧歪歪这么多,打字有点累了
$ _% k9 m; F+ f; `+ {0 R5 V# q' @9 M3 I' f8 y1 B$ p4 o5 R9 U: N
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。. `. L) f+ M8 t% g2 i4 z* ~; A
$ ~+ A+ ~5 r* ~: Z# P$ C
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]




欢迎光临 【3.A.S.T】网络安全爱好者 (http://3ast.com/) Powered by Discuz! 7.2