返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,  ?: F3 T: p0 Y8 e: r
: z! K. E! k6 Q8 G! d) u# s
特拿来分享给大家。
8 @7 p6 b9 D, X6 ]& v9 f0 |; I2 }; J  P9 n
今天我们不提我们国产的那些杀软,真的垃圾的要死,0 b, G  V9 Z. O( i
2 }- V8 H% l! f( s  D$ N( G3 v. L' C
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表. C8 A5 h) Z9 A) z/ u; X

9 G: T- {  B# o9 k2 I我简单的重建了输入表就把瑞星搞定了,
  M7 F6 s" ]" c4 K' V
# x. j0 u# f8 h5 l3 `& L失去信心了。我曰% V+ L) o1 ^: A# M0 _6 K9 Q( @- w
% O" C! t# F4 }4 \: i0 ~
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。2 [. B* Z8 A$ L3 v% I
: j7 h0 S8 F5 N, P6 ~! n, S
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。) A7 C: l5 S) U

$ e  P3 Z: b, K外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
2 E: _: `% L% D, J0 H
9 M% Q1 ]. x9 e5 k% u高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
5 J  g* ~. e* q; s8 h
4 g4 [/ h' K1 w3 _  T过了以后再调到最高,再做免杀。
; r7 b) }, ]5 X- W
- }+ _& r! B# c0 }: ~0 e1 a以上是废话,, T' P! h  Z2 p5 s" X

$ p* F* D- P- Q好了,下面我们来说下常见的免杀输入表方法。' T  Y5 [( |+ ?) `& d  i
. l/ c; T! ?! h! p8 H- U2 Q6 d
一。移位法
/ {/ T6 V+ I! R  i) x1 `0 b: s( g/ S4 [! t
这个已经过时了,我们的国产杀软及时的跟上了时代,) P7 O" q8 w; ?( P  b2 |

( P: u; f/ l) f! `7 k- y5 R+ m. Q移位法在去年过金山和瑞星,还有江民都是可以过的,
7 `% r) T/ [' G2 x( q  U6 ^+ z( i# F/ r3 m7 e* Z
现在的杀软智能化了,移位么?呵呵 ,追杀你。  \6 }- ?7 H; g% m2 V5 [3 }, b

- ?1 M) S2 m: `  P4 N; n; ~如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。) E3 C2 {* @4 l% S: K" n5 P: ?
( J& P) M& F8 r; R- h) N" \+ E
二,重建输入表8 o( r: ~; W  l& o3 X; K1 `
% j! f$ i# ^7 G) \* p  P
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈/ A' F- ~/ q/ l5 ?+ j

9 |+ ]# F8 ^; [这里我介绍下,
* u6 K5 w& }' b" p  t3 t
# @/ D' i/ j( d用到工具:
# a- r' ^) l5 v/ t, W3 j+ m  W, yimportrec1.6
1 w! P9 t/ X; }4 p+ Qod* L1 V3 S% A; e
c32asm. p2 K9 R, ^% T  h" Y/ a1 N5 ?
loaderpe
0 d3 ]; {2 q# s+ u7 c这里我们简单的介绍下,如何重建输入表
7 s2 N, i, o2 C7 k9 v& E, E
8 i$ l* `, N. {9 }2 f: d; M首先吧文件拖入od,打开inportrec1.6# q' g( M6 t6 ?4 Q: I( p0 \

3 F1 j) |% I" D+ {: J, ^如图 选择拖入od的程序,# S+ R7 I1 }  G( X, v# o$ w  C( g

) n" o3 Q8 _: M+ {5 j8 z# H- I# y
6 M/ _' Z2 c7 F0 @7 o6 }这个时候,我们打开loaderpe,5 `; X0 [' M2 ~$ F& y
  u8 G6 N2 S/ P: L, o* \" X! j) \
拖入我们的木马
/ Y/ v! T2 I, f0 L8 q" }5 z
2 o' w! T: F" R7 E选择目录,$ r# G; U8 o; K

+ V1 R2 s; w8 @' T" a: {我们看到导入表这里。。。
' ~& z0 l4 t  {* |, J% U8 Q% [5 U8 Q1 A, \
如图:( v+ v! {8 b$ y3 x% C

* y* n. t8 V" ^0 o& U5 e; a- V. _9 N; s1 e8 j" c: F6 g
RVA地址是0001D000  大小是0000154C/ I, {/ v, N, U
9 g" Q! s# d# l. P8 g1 q
好的,我们把这两个输入到import1.6里去: S$ V% P: V9 p' c. E+ i

- [: S: g* t; b* |" V9 ?就是在“加载树文件”那上面一点
# [! E, f& x/ H( [4 Y0 u' I+ i9 S9 Y0 |. w  j
输入RVA的地址和大小。
% g; E" i) W# j. z& H" i, |& }& _% Z- Q" C/ ~
点击“获得输入表”- O& w0 j' Z" x' f9 U

' A& g; @6 _& R$ f% L5 U5 q; g然后点击“显示无效的”3 t7 r" t# R, C; c4 |7 r% L
# x4 G& v0 ?; \( I8 P
接着importrec会自动列出
( U3 I$ M4 o! _7 P
$ m/ Y7 v" r3 I. _  i8 r; ^我们把深蓝色的字体  右键   剪切无效的指针: a+ `1 }9 w4 g9 G( _# o- s3 o

8 i, I7 y4 |" B! y) J, M7 x! H6 k( c+ E4 K7 K$ ^- |1 }
最后,我们点“修理dump”7 N, N! C2 E, ?; g

- E2 X2 q8 s4 I3 w1 F  F3 Y+ Q选中我们的木马就可以了
! z1 q) W6 Q* u$ y& F" z( z
) y1 v! F9 `* d$ N- f" U* U最后我们要用到c32asm5 S* z) H  [4 }) t: r) o" S
1 b' U) y5 Q% y: [
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。& }0 \5 b( A" S' U' `! u

/ S1 {5 i0 P4 A* r/ y  Q7 J1 a这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)  g5 T+ L0 d9 F+ t

1 r. k* Q" \8 j, h% C) d1 J# ~+ Q' Q6 D这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
6 }( ?. K5 z3 E" B2 w0 j
( k1 V: e; A4 k8 Z我们把马子拖入od的以后,打开了importrec1.6
; ?3 X$ g6 J' `% K0 g" R6 e# m# a: \" U: @) P+ x
在选项那里,选择根据序数建造输入表和创建新的IAT
' y3 X5 K; K7 e% C' v( {$ ~5 r6 W* Q' W
如图; F2 T+ Y9 z' Q0 y

5 G. k3 `# J+ R2 o+ V" N5 a  d" E% _7 ~* a+ C  b
以后的步骤照上面的方法继续就可以了! o% t/ F) |' Y" a  Q) F5 t4 C  \
' S8 F" W) ]. D" V( s
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了; i& l, W! m" a* X8 M8 f* U3 D

3 X. C8 |1 z  V因为kernel32.dll的大小不一样。
2 Y5 u7 W; W) U& {% V7 T$ {9 c! i0 E! W: @/ x
3.修改originalfirstthunk
, N! i; J1 b. f' k. f
- L" e: E# Y. n& p如图所示
3 V. Q* Y- T  G% \) Z7 S  H( w9 y; i8 [% X! N+ z1 o$ _7 G( W

' Y1 T' u' X3 v' E( t  j6 S! T我们打开loaderpe,依次点  目录--导入表(后面那个横线)
4 }. C) y0 d$ C8 V; S
' [( X4 J) ?# z% n我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll( Y- T, D* p& s1 U8 Y, A- j
5 c$ R9 M" ^7 ^+ Y2 R) ~
我们右键--编辑--把函数后两个00修改为FF0 |& F4 C# ]7 X6 o
* C! k- t& k$ g3 f. e
这样可以过小红伞查杀。  虽然会出现错误提示
* W: N+ \2 o. _/ T0 ~: D7 l$ @+ q! ]; _* O
但是不影响木马的功能,不影响上线。7 r( X# ~) Y: Q  `9 }' z

/ ?8 R+ C4 S, p/ I4.dll后面加20 90法过卡巴查杀
" k% d. B% F" e, J! u. @5 n& y9 r& Z! T& ?
需要的只是一个c32asm而已,非常简单但却非常有效
- t  Z8 t( ^  }3 l3 a8 {. {* T/ x3 _
如图; y! x) W6 m; d: s; w: k
7 F& {. `) r, L2 d% X

4 F6 {4 d( M$ d# D$ C
( ]- a% O7 N+ u' y7 J: y我们可以看到,+ Y; _' @* ]- v* L1 F4 T
' X- |- @: M: R
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90; Z) c" \4 R7 o* G

# {8 I: Z; D% F( W- D6 }这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection  h$ ~8 t. U8 S; Q8 w% ?

4 l# u1 ?% z; _% m5 X我们只需要在他的所属dll后面加个20 90就可以了
% z! r" J/ p, `0 ]9 B' s# F$ R% V# g# h$ U
卡巴目前还不查杀此免杀方法8 @% l% ^7 C9 `; j' |
3 l; Z0 ]6 y/ S$ h! F. z2 y

# m' t: \: b% O& w4 ~4 F唧唧歪歪这么多,打字有点累了
3 q/ `' v' K+ B: r' C, a+ S2 y
1 _- \- r5 s  `( n以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。3 j* z6 Z) m1 ~2 }" N

& X0 L9 Y7 F  D8 h" d[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表