返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
! w0 ]# o3 j9 v% U7 V" a, `5 P( t3 k/ G
特拿来分享给大家。) \# j7 x5 S( J; v

- @# U  f$ Z8 k1 B今天我们不提我们国产的那些杀软,真的垃圾的要死,
9 X/ K! k' p- m8 S6 \( c# L
- x% Z; W: @1 Z* |4 h# z上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表8 |! B% C& Z5 l$ \! s
2 x& E' t1 V$ L2 X9 L
我简单的重建了输入表就把瑞星搞定了,
. X; F1 h) O" e, |- k6 a% {
) s9 V5 _  M; w7 T/ N失去信心了。我曰
- n: S- \/ u/ ?* f% N1 V( M5 S( O
4 }. z- U8 P' m8 o& w! h* u今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。9 M+ ^2 {, E4 N: d, s" q, _

9 T: B0 i' p& r# z+ [" g首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
1 f5 P; [2 l- L7 {8 L. o, e- H9 W2 N
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。) D: \6 e1 R, _2 S& b) l6 S
1 r% a; ?7 s5 i9 W1 z
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低. r, Y( h' m8 t" J

( z  Q! t# C+ x6 I1 C; j过了以后再调到最高,再做免杀。
& q. z' Z- @+ |  b$ {! s
- O# S: B% ?/ G! {# K  x& U- _. ~以上是废话,
2 p& V1 M, M- g+ L$ |: t
& s, j7 Q$ B( O& R% O好了,下面我们来说下常见的免杀输入表方法。2 W+ l, ~/ W7 E& E3 b; w+ \
4 o2 Y- Z7 e3 b  ?. B& T5 H. r
一。移位法
  {& J% @/ W# c0 T! y. ]8 z; M+ A( C& T7 ?. |
这个已经过时了,我们的国产杀软及时的跟上了时代,+ }5 M. b( I  n" N+ A5 R2 z7 N
' o2 s/ W6 E' {# g
移位法在去年过金山和瑞星,还有江民都是可以过的,' A! G$ S* u5 m7 C
; ^& R9 y/ j5 J; l5 y" c
现在的杀软智能化了,移位么?呵呵 ,追杀你。- t4 m  g  l# O
" l% V& {0 _7 ]3 M
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
1 e% e9 W8 {' C/ F4 ~; G4 i- L2 a. d
3 _: `1 R# y# P3 B1 Q* C/ u9 T二,重建输入表8 R5 |# s" a. S4 N: Y
, ]) R  q; i/ M  O. v: R
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈$ G# p' M- ?) _* G2 K! ], ~
+ S9 c' Q; d) T) k
这里我介绍下,
7 Z7 P- B0 A# q7 b! a* [+ x/ B+ I5 g# J7 X$ X7 ~- _
用到工具:' J$ P5 R# x4 V$ W& G+ E. g
importrec1.61 [. X- D$ H2 o
od
) D$ c, d$ d/ ~  V) y  pc32asm
: I! ?/ C, D) U. g2 J& Ploaderpe) b6 v9 |% s; \
这里我们简单的介绍下,如何重建输入表
1 I+ o2 Y/ m- F; J) f9 P
3 a: [. q" e# s, D" X首先吧文件拖入od,打开inportrec1.6
1 Y; |) ^+ b6 f) U) C. m- X
; @0 ~0 Y5 y/ V5 @8 f$ l& ?6 O3 h% M0 W如图 选择拖入od的程序,
$ U; t9 D/ D5 Q) A$ S; _) M0 A4 A6 X2 w* n, V
  Z* {- V# `( G0 K' ^
这个时候,我们打开loaderpe,# Q8 k  A) n+ E' y% |* @4 L" v

% l: V9 `) g% K' g1 h拖入我们的木马5 U! G% d5 T& W

/ p! P) g1 _" q! j, `/ Q选择目录,
+ t, E1 P4 J; z- a9 l" }* z5 k4 p! ?4 g: `4 _: K9 d) [
我们看到导入表这里。。。
' \3 Z$ m2 ^% H% \  D
3 C5 _% Q, g  U0 G4 m如图:8 E4 ]" r# f1 n' W
9 {% Y7 x# p4 z: ^; ~
, B/ L6 D2 p; [& n; \6 d4 [
RVA地址是0001D000  大小是0000154C
. \+ d, R. ?7 ]* x7 L! d
) ?4 @& @+ Q# a: S好的,我们把这两个输入到import1.6里去2 d* |: O8 P" F) V
) J2 K2 p4 M( Q
就是在“加载树文件”那上面一点
/ P4 r5 y: U: [; W" Z' I/ Q" X0 n& P1 _+ g; t. i$ b
输入RVA的地址和大小。
$ V* D4 J% t/ n9 _; B5 s' O9 h) ^; p! C( w6 D& [0 C: e
点击“获得输入表”, V: {6 E" I1 F, P
" G' e# {+ o: @+ y+ ]6 R) g/ j
然后点击“显示无效的”& f7 ]$ \* g0 w( F# ?: S& R

% [. w; {2 G. Q2 X* A5 d" K接着importrec会自动列出7 g; ]/ R& O4 T  A$ s
) y" k$ Y% ?5 [- m
我们把深蓝色的字体  右键   剪切无效的指针
1 S; ]7 V8 q; F( G. R6 d+ J7 |; z  _* Z8 Y7 W% n

: E2 a4 M# V1 w5 s& @最后,我们点“修理dump”' L7 z7 _! G0 h) G  f) ~) [

* v( I9 {" I( Z+ E选中我们的木马就可以了; P6 q) ~' Y+ A2 X/ l
$ z( P9 l5 l3 s2 j4 a& P* d
最后我们要用到c32asm3 N9 U7 A0 y" I5 a

, d) ]7 S" c* o- u我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
& k9 Z' d2 Q* o- q6 r" y" g$ f+ x2 n0 |  c
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)% O7 ^! ]+ X% I0 d: V

! p( h7 X. G8 \  n6 n- B这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,6 i; i- v5 R7 s+ ]# i  x3 ~/ x
. d2 [* \8 F  p( |) {7 O
我们把马子拖入od的以后,打开了importrec1.6
; e$ a# U: [+ v' s
2 N6 U2 k- R7 c在选项那里,选择根据序数建造输入表和创建新的IAT
6 y2 O, ~8 S" H$ O5 |  R3 q( E1 x% e! J# S
如图  w0 u! h* C. U  T, U; b
0 {" t' A1 W3 Y* A

4 l6 f5 l$ A& N! Y- p& G以后的步骤照上面的方法继续就可以了4 f8 p3 O8 f% q. g

& |* Z/ Q" y" g, W; i  P! a不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了$ m& b0 X( m" {

- {: ?1 C- \8 b  @" K8 o% _因为kernel32.dll的大小不一样。0 p9 J* R3 d' f% z# M. A

3 Q1 ^) {2 V# M; V3.修改originalfirstthunk, V0 }5 ]4 g  S# h% e8 s
9 B2 ]0 [+ X* Z9 H6 u8 C2 @
如图所示
+ x: o' o  Q8 ]! P4 N3 M, e; x' N& r7 k  k4 I" }
/ f9 h6 f& T) ^7 B: P& h6 O% b; S1 j
我们打开loaderpe,依次点  目录--导入表(后面那个横线)! I4 T- Y- [0 m! U. y  f% h" |0 l
4 @; W% x; M. J3 s3 [1 f4 t
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
% V$ `" J0 I" r# F$ v5 u# h1 Q7 ^8 e( f
我们右键--编辑--把函数后两个00修改为FF
8 k0 z. b0 {- H: X! j- n  I. ^
: a. [! A' J5 p& T! V/ f8 {5 x2 q这样可以过小红伞查杀。  虽然会出现错误提示
& N+ }" K* M! H' j& w4 o! m
( _( m9 ^0 O5 P" O6 F* I; R/ h# {但是不影响木马的功能,不影响上线。8 p$ Q, Q( X4 j/ Y- {
$ w8 X: k( [) Q' X- n& S0 u
4.dll后面加20 90法过卡巴查杀
( `6 B: h1 Z3 V& |
. A# f. @$ ^/ g1 r7 b- ?; i需要的只是一个c32asm而已,非常简单但却非常有效2 d5 t$ A- ~: |/ j7 Y

2 B* [' Y2 ~  ]: C& S- g如图. Q" l- u9 G6 Z
! u6 D) X) B- C: k
: W: {% |' U" f* Z! G# f! c( r% [

4 V0 `  [5 l; A5 w* V$ v我们可以看到,
. U$ b; G+ i* c& k1 z6 w. ?  L7 V& K2 ~
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
* S  b' Y; h# m0 Q# z
+ e: R4 n# Z5 L0 {/ v1 T: b* o这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
: q% P/ L' n, e8 z7 {  M' `1 y" [
我们只需要在他的所属dll后面加个20 90就可以了. S4 j+ q# M1 R) K+ ^8 q

$ M$ A* E# e- L! b: H卡巴目前还不查杀此免杀方法* F! K- }4 |0 s, W
. b- _2 C: [6 m

* K1 V4 f" }* I' a* Y唧唧歪歪这么多,打字有点累了
5 k0 y0 T/ J% j; ~" E2 \
. c0 a: f; U' f: g0 |以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
& x* l* G# `: n7 D
6 h8 t7 {5 k2 B* G' N" c[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表