返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,% e& \) n% F- ^
' k5 L; P8 F; a7 g& R) k
特拿来分享给大家。3 b8 m8 i1 f( b: r% G0 n
$ @/ }7 ]2 G" q$ G# c$ r
今天我们不提我们国产的那些杀软,真的垃圾的要死,
1 ]; x: k9 a0 I' D# [
& [) r8 J+ Q  O( g- s5 M1 }上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
. Y. l3 N7 z- ~( ?! d* s! Y1 [2 P6 z! y- k. _
我简单的重建了输入表就把瑞星搞定了,$ D7 G; S  u+ U
/ L9 `5 X" U9 I0 i' r
失去信心了。我曰( C1 [& a: r3 ]. ~' a

1 ^. A3 q8 v  d今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
7 U4 P+ g! d; |2 \: L$ J; ?8 L& X& x* r3 J- _
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
- s3 Y. w* l) e3 i- E6 {5 E8 a1 i7 P$ G" p& D! V) z
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
* U+ N, G: p9 _7 r) Q
9 L. _9 }: [8 N6 r. X6 N4 G高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
: X' n3 `* f' D0 C; v$ ?3 j% i2 I/ H- i  w
过了以后再调到最高,再做免杀。! ^2 ]* J* Y( q3 c! [" t# @2 @

4 _/ x! ^8 Q2 r* t以上是废话,# g0 N1 Z8 Y* g4 `' ?

8 t- |" P1 @" U0 A* ~好了,下面我们来说下常见的免杀输入表方法。6 m" ~, Z. z4 h- Y% |$ v6 x
- o! R5 g% _/ l+ B, D4 a& y2 g. m
一。移位法1 v. n, ?1 F" N5 R# V4 a9 G

, V; _0 M* P0 `; J) |这个已经过时了,我们的国产杀软及时的跟上了时代,+ [# s) h: `/ P' G% F' d0 C

; ?  g$ r2 F# h& k" V: y移位法在去年过金山和瑞星,还有江民都是可以过的,8 q3 E& l0 e. |' Q" d

! y- ]* O  f. v  D  T现在的杀软智能化了,移位么?呵呵 ,追杀你。7 k+ h, ?5 Y: r" \- Z4 v

; U) \. F) r9 j5 Q1 V$ L如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。5 i! G( |; e2 f) j' w. P4 s
, a3 e$ l5 i3 y/ l: Z/ F! M
二,重建输入表
+ P8 m2 Z+ `& h5 F2 G* G
6 q& I7 h% z" J- l" o! C3 x: b效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
- C3 o$ D& Y* o7 i+ ]3 p% c1 T/ c" c% f6 d- t2 q  b" l& W% l+ o
这里我介绍下,
: S6 d* D+ e0 ]: ?- c* u& v" d) b+ M$ a8 U! q
用到工具:
# C1 W/ z/ l, i. T' }importrec1.64 g4 K5 G. `; \, i3 T  ]/ X* l
od% `- Z  Z, M' m7 E, k( K
c32asm
3 ]& p# c% w& E. l9 zloaderpe
/ t4 z2 H5 W8 T7 G+ I+ f1 h这里我们简单的介绍下,如何重建输入表+ o7 D  u% j+ e* h5 G! ]9 L: T
6 w& p/ @- q. `* z8 c
首先吧文件拖入od,打开inportrec1.66 P) v5 I: A: g) A/ ~* J  \3 Y
# w1 {. R, ?5 K, A: N
如图 选择拖入od的程序,, F2 Y  x9 t1 j2 K) g8 j
: N' A( C5 W/ `- R
+ H  W. C6 L- y: Q& a4 k; N/ @
这个时候,我们打开loaderpe,
1 Z8 t# K' l9 T' v$ d: \: o! o# d8 m! v: C3 F; h
拖入我们的木马
# J( n3 g, H& Y5 P3 w
( t3 D1 m4 a5 v' `$ Z6 ]! l选择目录,
! C1 i6 O8 Y  }+ ~
# _9 T' Q" p# }( m$ E我们看到导入表这里。。。7 z6 j- ~. {# r% ?: t# `# w
9 r3 W! G0 }" e9 |( H
如图:
+ m1 p* s" y, W6 B/ m) c1 P4 I
2 I( l$ n9 }6 y" P6 ?
RVA地址是0001D000  大小是0000154C
8 j) Q" b  E! C5 g8 z
' v6 S$ R+ d* I6 i" V6 P* w9 }好的,我们把这两个输入到import1.6里去
% g! O! O7 V, e. s
9 e( N2 @* k  b# A9 s: J+ v) @就是在“加载树文件”那上面一点 ( T9 `4 \4 a6 X8 O+ I& @& B  u

- e0 R' L2 ~* S5 v输入RVA的地址和大小。
8 [3 G. h+ X$ \) ~6 g/ m# s5 N6 r, K; v5 D& {; n% d) v5 @0 Q
点击“获得输入表”" ?$ Z% a9 H, _2 J: [1 P

* z4 D2 |& V/ M7 D' a然后点击“显示无效的”
! |! u, ^9 c1 m$ S  s# Z: |$ Q# n/ ^$ w3 m! l/ E( y
接着importrec会自动列出
3 [% Q: S- N! I2 p3 e* h( G: J7 Q- Y9 G# @6 B- Y* p* `+ t& C1 g
我们把深蓝色的字体  右键   剪切无效的指针5 e3 c# {7 h; k1 d5 G) q, N* `( V+ R
' B. T  r. u* d
! o9 t: _+ K+ `2 N4 r/ j% \
最后,我们点“修理dump”# C( O. y: T( I' Y
% k  P6 Z$ v- z. `7 f
选中我们的木马就可以了# f$ w' V8 l6 P2 \

  M4 C0 \9 n0 F0 C2 c1 M( V- d最后我们要用到c32asm
) {3 h; Z% X& b4 ]8 L  R
4 i- u" I4 n/ |$ K" Q  _我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。/ K* H& [  F- Z$ I

2 b) X+ m9 x+ z- u2 N5 q2 A这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)+ s; Y; A4 O- ]) J! U7 E

) [# a4 m4 N7 y) B( j这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
2 S1 Y. ^; W" ~) v3 m" X  J2 O- ?$ P2 E
我们把马子拖入od的以后,打开了importrec1.6
" V, n) }  R' Z; Z9 Z7 s* ^0 ?$ m
, D! z& ^6 v7 x6 e5 k6 H在选项那里,选择根据序数建造输入表和创建新的IAT! V1 v4 r4 B1 H# z

& F* ~3 a( p5 c1 M# F7 t+ P如图" ]* U0 q/ a8 b4 B: p
9 u. |8 \; X0 z

" K: z0 I8 I3 ^6 E7 x以后的步骤照上面的方法继续就可以了8 X# _1 [  L+ q6 k! M0 O( O
7 A% R- G* k1 m- }" B4 S
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了- S- p, o  Z1 y5 f1 ^- T0 a
- p# Z3 m$ ~' m2 B
因为kernel32.dll的大小不一样。
. l( l$ T; H5 ?! b9 _5 g; N2 w9 k  v) W! X
3.修改originalfirstthunk
2 L& N4 ^% k8 F* {- a/ I+ e
8 L# Q0 W& b0 K6 x9 r如图所示; R0 E+ e* X# ~! Z) _3 t

" H2 _; z! L2 v. ?# b2 l+ Q" \
! @; J! V. A5 @6 o9 `8 g2 I& ^我们打开loaderpe,依次点  目录--导入表(后面那个横线)
0 N, H+ |& L( {8 J- q/ Q6 l& w( N+ g, L8 }
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
+ x# a, U+ @1 V: ]: B/ R1 ]! ~2 ]% d& D2 o. P$ ^2 N
我们右键--编辑--把函数后两个00修改为FF
* C+ k* H! P! ~7 K7 I6 K. \! C2 T5 t3 F. t# h5 v
这样可以过小红伞查杀。  虽然会出现错误提示
8 O! s& @7 V% m, E' w) V& X0 s. f& k. n7 @8 d: @4 Z) O
但是不影响木马的功能,不影响上线。
$ q, g8 [& w2 o5 W
% y6 K4 y8 I+ Y" M$ M  j2 r: S- d1 w4.dll后面加20 90法过卡巴查杀
1 W# _6 E. J7 y. ~2 Q0 C# T) D4 I" l/ `* a
需要的只是一个c32asm而已,非常简单但却非常有效
- W9 r2 e6 o1 {; m; P8 T$ N. B1 s- X2 H% I9 J' w* z
如图* i) S. `( G4 @& u
. p3 ~9 ^& O' T" a$ t1 X: \8 |; m

' v2 U$ C1 `$ _* e/ r$ r2 e6 ?* t. r) n: v2 o+ _. O' |5 b
我们可以看到,/ r6 C- ]7 B7 l5 z
' X9 g3 n6 x1 m
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90, e" \" O* q+ m& {1 y( f
, [, h$ v/ t, G/ E, R- g
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection9 l, Y& B. d1 m7 V8 R) T
' y1 |' l2 W2 i2 k3 ^
我们只需要在他的所属dll后面加个20 90就可以了5 t, l; W- ^% y4 y, v6 E0 K

) k' w  [# l2 J( e卡巴目前还不查杀此免杀方法
# a* I3 C8 f4 w! s6 `. }- @& p  n( X8 F! V7 x" i' i9 `
  l- R& W6 n$ ?. T1 @" g
唧唧歪歪这么多,打字有点累了
  o3 p$ A& E+ @8 L" s3 X. B' `8 u) O
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。: _- Y( B  Z+ V, Z
9 s  ~4 t/ a: |. R& g& v
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表