返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
2 F, l+ E& u) M/ H9 x% f( @5 @( _
特拿来分享给大家。
1 `' ~& r0 m6 @! p6 a# s
' k  M3 x" E/ A. X$ e今天我们不提我们国产的那些杀软,真的垃圾的要死,
; @9 Q$ ]8 G# F7 }% o' K; a' o" q3 p* y* k  s& [( @; [( E" h% \
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表0 B9 ^+ r$ l% E) w0 D

' L! a; g# |, P* g2 U我简单的重建了输入表就把瑞星搞定了,7 ?: V, g! [/ e# r, D1 Q0 I& ^
8 s3 d9 G0 v" H" [# z; F
失去信心了。我曰
9 k+ \  Z  ^3 }. ]( k! v2 F& {- P# N2 i
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
" s! B/ _0 p8 v8 a9 I# F  p8 d9 e8 c! |+ g
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。5 ~/ e0 ]+ [; V' E- R6 d8 [2 ]

  C8 A% {- A! a0 _外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。6 {6 Y" Y0 d2 ~. O; R0 G& h  ?

: a5 t* W0 |# V0 j4 t高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低; i9 P8 {) q' E/ q/ G8 g4 K: l
6 E* Y! z' }$ Q: j& W6 t/ G  i, M- B
过了以后再调到最高,再做免杀。
8 g5 I, |+ \+ a3 P! @) D7 x, O. Z$ L9 l# u) f$ i" ]  m0 c# I
以上是废话,
, w6 x( E+ ~0 U
; a7 U) }) {' E, J好了,下面我们来说下常见的免杀输入表方法。4 v6 b1 V( r% n6 U- F
$ u; T7 o7 }5 ]/ a
一。移位法
; m; ?! N2 E* E* n. q1 T1 L' R5 {8 N; X! L3 B% v" s4 y2 D) d
这个已经过时了,我们的国产杀软及时的跟上了时代,% f0 ?2 u- C$ U

) n5 _) p, s& U! F" \% s6 g移位法在去年过金山和瑞星,还有江民都是可以过的,
4 a0 t" c+ E9 S: o
. c3 t# G, q1 e' L7 T现在的杀软智能化了,移位么?呵呵 ,追杀你。
) [. ]# G+ ~- M8 Q$ R2 T" K2 T8 A: i
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
. L  ~) I: I+ C' h* D+ ?" ?* R, q$ k2 e1 z& G6 o4 d) g! e
二,重建输入表
5 c- C' a* C; A4 R, `
. i' Y; b# b& X+ }9 A效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
0 j1 J6 i$ V) g, Y8 z! w
4 g- s# B( ~* o: x. H2 o6 Y) R. y这里我介绍下," L% d; T! f0 b! t0 \

/ G6 Q: l& Q$ v, E( z3 P0 M用到工具:
6 F0 [# M+ P0 R1 `/ N6 |/ }importrec1.6
* ~1 v; N8 j7 C8 B# Zod
3 [. E  x! E# G7 _: q3 X( \c32asm
6 Q0 K9 `  f  v3 m$ Iloaderpe
1 n& r  |* S* W# O9 g. n2 X这里我们简单的介绍下,如何重建输入表
+ S! Z# X& f) o' q! R8 r: ]# x: a$ Z! H" G5 T; [- P; p4 r
首先吧文件拖入od,打开inportrec1.6
+ G- c0 C, \2 R
: q( I, v% ]/ p4 M. O2 ^, L如图 选择拖入od的程序,- `4 q. M  `# @: o6 T* S' t9 L) c

& V7 I# K* W+ P& ]* \4 @; Z6 h2 s4 b" Z, e6 f
这个时候,我们打开loaderpe,
5 J& H5 M; [. |" }3 o
5 R2 }& H0 t. K+ O6 o拖入我们的木马4 c4 e$ u6 Z( Y' \6 u6 D: e1 m) Z

& w, U% k, v5 t8 W! Q6 d) Q选择目录,
7 T% z" q1 K0 ?  b/ l
; b/ g( f3 x# r' f* G& ]我们看到导入表这里。。。: K4 T. j& A5 v/ i) T

* F7 j$ ]0 F1 O4 D$ z如图:
, ?9 v: e& a) }; F
  P3 h+ c; E& @# m' `, \0 b5 s# t5 ^# z' V
RVA地址是0001D000  大小是0000154C  E9 R& a+ D0 i
' p% Z; ]) M* S7 x7 s$ i( ?
好的,我们把这两个输入到import1.6里去1 E0 {& p% e- X. L$ {
6 B( h$ F. P/ c, @8 c; s( w/ `
就是在“加载树文件”那上面一点 ! f- |0 ^/ D0 J; U
2 l, q& e% d# W+ F
输入RVA的地址和大小。+ f, B/ `& V7 f* ?/ Y  i

6 M" C7 x: A4 N8 \, l% t5 J点击“获得输入表”- j1 d5 y, P7 Z! P. q& o* r  Z
& r! ]2 H( Z2 d, C8 U4 I
然后点击“显示无效的”
& Q6 d8 b. {$ H8 C7 {  ?' Z7 j$ L& v( p" S+ f. c2 D
接着importrec会自动列出
9 c! V4 K  n7 W1 u
" _% R. o2 d4 Q1 u我们把深蓝色的字体  右键   剪切无效的指针8 G9 ^$ h2 G/ j- x+ i0 }/ L
5 \' R; y$ m  `/ S, A

# H% z1 a/ `' S1 J0 ~& H: N最后,我们点“修理dump”+ w+ X9 @) x8 `! p6 L
  g9 x; p" T, ~
选中我们的木马就可以了
# i+ }0 F' @9 S- m
6 h: g0 ^3 I& e& A6 F: s% B2 Z% ?8 W最后我们要用到c32asm
7 Y+ Q& n' M6 P( |/ b1 f( I& S  k/ _* N# t; Y# ~
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
! z" N# \+ ]; V: h& h
: X# |3 ?0 ^# y& I7 b* G这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话). t" v" ]& m* \

" f/ N. a0 X  U这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
0 n8 b. g9 |: D* k. _+ i9 \' ?7 W; U+ t7 r$ c/ j2 s7 F. u4 a
我们把马子拖入od的以后,打开了importrec1.60 ~1 Q6 |/ x) N
% V; n4 }  }  L, d; t8 ^* y
在选项那里,选择根据序数建造输入表和创建新的IAT/ e. g( u" w3 ?# L
' V+ h% W" m- d* `
如图
: M. |2 c: j. \' I6 l8 j6 ]2 e" e/ C9 Y7 {
5 X; }" q2 q3 v$ _; W1 j
以后的步骤照上面的方法继续就可以了" F8 ?1 T( A1 W

0 p- b4 |6 a6 w2 Y不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了' |( c& p( y! @% H+ h. E
8 L! w0 {2 a9 u+ z- `
因为kernel32.dll的大小不一样。
; |! u* G# O' ~# J' h0 B/ e
7 d1 V+ c) k1 p- J% F2 V, c+ |8 V5 `/ U* x3.修改originalfirstthunk; d" Y( n/ C0 L' J/ b8 B
+ P0 O' w) N2 I8 T3 M& N3 x
如图所示6 o+ R6 N7 s( `- h" t

3 r- H0 V7 w, l" w- {+ s* u/ C* ?
我们打开loaderpe,依次点  目录--导入表(后面那个横线)
3 h) g$ a4 T8 j( }
  @6 R( h- W+ ~" V4 p9 h5 s+ q我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
0 ?7 o9 j; h0 b3 P% ?6 [9 ]& C( Z3 h4 N, J0 i3 q
我们右键--编辑--把函数后两个00修改为FF( r+ g4 Z) T7 t, u  f4 E* o7 S  j; @
( `4 M0 K) }: j
这样可以过小红伞查杀。  虽然会出现错误提示
+ k* X& V; J. {
" I- o4 m+ r9 Q) x$ p但是不影响木马的功能,不影响上线。
# c5 b/ v" i/ o& x  c- W" u) C7 y3 S' F  W$ R+ t4 p8 B
4.dll后面加20 90法过卡巴查杀" J+ c6 M8 X6 T

- W/ f! o$ T5 d( W( A2 T" \. ]需要的只是一个c32asm而已,非常简单但却非常有效
) `) F* N) A" g1 u
) H( `; H$ V* a* X如图
& o& q/ h& a! u( n# H3 I/ N  Z, ^3 e
) i( K! A( H2 l( o5 Q. g
( o1 {$ D2 u9 c" e+ U
我们可以看到,
% ?; i5 |# M1 C" X8 k% V4 y  B+ C2 Z5 S0 `7 u1 ]2 j
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
) w4 t* B/ q" k$ `& B
" g7 E( e* B& Q8 p! w  }4 l2 J这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
2 [7 J# k1 Z# M# z0 M5 A: @) k. m$ I
我们只需要在他的所属dll后面加个20 90就可以了
! U, X1 h8 e) ~6 y) O' l+ \( ^( |) ~
卡巴目前还不查杀此免杀方法
$ @( Z8 U) w: U3 k2 D4 L8 Z+ I1 j- P- C; v

+ h4 c9 ^% k4 i) d1 O唧唧歪歪这么多,打字有点累了
1 G! t# L( K# O: x' z, g) H3 s9 ?7 A/ r" s
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。% ], d  p1 g2 R) O
3 D) e/ A0 S; G7 }- {- v
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表