返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
3 S2 Y4 N0 G3 K4 L; h, ^
  }% o. Y% W$ x) I8 U特拿来分享给大家。
, ?8 f) u7 I: Y
7 O& m1 C6 j" a) l  q2 q$ s) n; E今天我们不提我们国产的那些杀软,真的垃圾的要死,0 K- ~0 `, B4 ]+ O" q7 d3 P0 x

* {! T8 {! x2 [' d- j7 S4 H上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表$ N& z% M9 y2 Y# P- k

) {& ~6 J# @  O% _* c我简单的重建了输入表就把瑞星搞定了,
3 I) E* `# x! B: Q
! x/ s, E4 [- h: o" _: V2 p- H失去信心了。我曰
9 D' ^! |, ?, g! O1 `6 W2 S* @$ Z' x. Y7 v
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
$ |7 P& a" ^' d' ?& t! x$ j0 z0 z/ _9 q% N+ i$ }
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。1 g: Z: M' H3 y( b

5 u% R6 F! Z" b% M外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
1 x2 S+ A$ y2 n0 |0 N; z& Q# B" {9 x3 d7 r7 {9 T. p
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
2 S6 c4 A; R. @( B+ D% l$ Q, X4 u" N. R
过了以后再调到最高,再做免杀。
* `, @" H1 l9 |, ]( _% \- U/ [6 ]. I: z- ^( ^
以上是废话,
' g# N  r8 C: I( J
+ q: r$ r4 z3 ]好了,下面我们来说下常见的免杀输入表方法。8 W  V+ Y5 A, R' c& M

+ W8 g2 v6 r# q! e一。移位法1 h/ R$ N; b' _' a, }+ |

% z" J/ a1 x2 u3 b+ @这个已经过时了,我们的国产杀软及时的跟上了时代,
! x4 ^7 U8 z! A6 ^% J. T. K+ q6 _7 ^
移位法在去年过金山和瑞星,还有江民都是可以过的,7 @8 L8 J6 q; \6 h

- a# w: G( `( z& c' t( U现在的杀软智能化了,移位么?呵呵 ,追杀你。) F# g7 e3 H$ z/ x+ a

0 m1 ?# [, v3 x) r+ i. H' h如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
7 d( b8 y" V# W* P" T
) w1 F9 h9 P- [/ v' G  {& x二,重建输入表; d$ R7 a* ?( N. ~+ v

4 g% i$ B& r; m/ X  K5 O  d8 j效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈2 j# {9 E" s& _/ |+ y
! k& N; H- m) V% D# a5 c8 r+ ]
这里我介绍下,
0 k- t4 [- P& P5 F- y% L2 [/ q0 N9 E* V
/ \2 u7 j; M: E1 n用到工具:
& f3 [" C. L" oimportrec1.67 Z3 y' \' ~3 h6 Y! \
od
! a1 M$ v' }4 ^: o2 }2 m' kc32asm
1 {( s/ M; c6 n" Floaderpe5 W2 ~% a4 P1 J4 u. Y' E0 g
这里我们简单的介绍下,如何重建输入表" q% D6 Q  M) L: C

  \* C! h1 N! s6 |: B* u首先吧文件拖入od,打开inportrec1.6( o( [2 X4 j9 }! {
' @$ X3 Q+ @: ]$ B" `& x3 F: k
如图 选择拖入od的程序,
" |' X- X. _7 j* H" a- T$ I
5 ]1 G0 w; \4 X& t1 r  |% a  m+ E
这个时候,我们打开loaderpe,
9 W2 M$ ], P0 C1 h3 x# E/ A9 X. U3 Q1 S5 t1 K* K% A$ H
拖入我们的木马
6 L& [9 {, L% X7 {1 D- ^" @+ g% k+ o, Q3 [" _2 J4 |' [
选择目录,
7 n+ _) I: y  ?, K$ q) X2 i9 M" [& z& m. @! t: h, j, ]
我们看到导入表这里。。。
2 j4 ^3 M$ Z1 O( k$ @7 o! ?/ f7 R' O1 C: ^
如图:
7 N3 _, H( U) ?7 b
# _# B' p( Y% U
' K1 D4 j4 L3 J7 s# m4 T) KRVA地址是0001D000  大小是0000154C
, l) V/ V8 E1 o# |9 y+ d
6 G1 n* \/ {& t  v0 ~* I7 [% ~好的,我们把这两个输入到import1.6里去5 {0 S5 k* N) C- F
5 D7 ~) v: |+ t
就是在“加载树文件”那上面一点 9 a; ^( f7 u! s" `$ ?6 u
5 h2 q" B+ v% v0 n, a3 @6 [9 w3 f. e" }
输入RVA的地址和大小。
- m4 A0 ]9 Q5 u! }( K) Z8 [
; {+ Z9 {: n' m1 K/ u: @点击“获得输入表”
4 z+ O1 y; W0 D9 q0 k2 A* v# i. P9 U
然后点击“显示无效的”- @; W6 s7 B9 V2 C" L8 c' J

! Q7 i# ~$ a* i( u$ a# f9 t) B! T& q接着importrec会自动列出
% d" ]% v& d9 @: x4 o' G
' C+ p# x: k( }( {! V我们把深蓝色的字体  右键   剪切无效的指针8 f- P+ X" b' e( `; @8 _/ r
; S& ~4 b7 b* w
1 v- j% I+ _8 U4 g$ }/ A8 ]& Y
最后,我们点“修理dump”
' ~/ b+ g7 J. m5 X4 }: N
7 G7 I( _! p3 n. g, k; _选中我们的木马就可以了
1 f) o' X; Q# U
. ]' o' o$ G1 f5 y- H  x最后我们要用到c32asm
5 Z$ m& {( O  W; |2 s
: j7 ~' E' X& q, D4 U' ^' B; F" n* n我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
# J8 W  y. @0 D) d6 V
  `* u& P3 ]- a+ F这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
9 _9 ~5 ~) O4 ^5 j" T* s% ]0 l) S- n9 U% E
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
5 [' S9 q# _" `/ Q
, r: S- w' d- j! D, Q: ~我们把马子拖入od的以后,打开了importrec1.60 w5 S; S& E' Q. U* E' k' U

0 w8 k, m6 C8 f& M* T在选项那里,选择根据序数建造输入表和创建新的IAT
0 _& V' w& q  a( L' i  T8 i# e* Z: P& B/ e8 [& k, N. w2 v* A
如图
" C. O& Y* {& D, t% n, @% a0 p( W" m( b& g6 i" g3 K7 |
* ^9 `2 A6 n1 v' f
以后的步骤照上面的方法继续就可以了# z3 z9 `8 X' v
2 D$ R3 u  h9 {5 e
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了$ e: x4 U; O& |

- w2 g* E( S) K因为kernel32.dll的大小不一样。- Q/ v+ t5 K- B$ `. S
' b8 ?' v# E" I" S* K* j0 ~
3.修改originalfirstthunk
3 j  Z. Q4 H5 U4 R% A# S. D& h! E. ]5 o9 z1 D  G- y
如图所示
8 i7 d! e( U! ~" w: D2 N
" v! s5 s. W* z5 s( V, \. @9 _8 L$ w: V
我们打开loaderpe,依次点  目录--导入表(后面那个横线)
" z9 P/ `, v4 a" y- H) L
( w8 t1 _2 l" {6 @我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
. z* A& Q2 p; \# @  m
# a0 a$ E; c: G1 k; X我们右键--编辑--把函数后两个00修改为FF
0 ~, `, S4 g& i! a+ b4 ]
, j% C) s* w8 o1 ^& o. j: f: T' b" X这样可以过小红伞查杀。  虽然会出现错误提示
2 l6 I. Y  J. A) `8 G$ G" u$ j" t8 q6 u" e4 L; E- C7 d* y
但是不影响木马的功能,不影响上线。
# h( O) b4 `+ t! o3 ~8 ^: i4 }' |
4.dll后面加20 90法过卡巴查杀3 _# A2 F3 a. X

5 P1 v, F* B& ?, `$ d4 K! c4 Q需要的只是一个c32asm而已,非常简单但却非常有效
3 G  ~% M; K7 `  D' f  `3 x! k' F) C
如图
. I5 t# q3 z' l. R. k4 V  [* U* O7 o" d% t9 d" @* r

2 K( ?$ x8 Q9 d9 O- w
& ~0 @% v( S+ U# H% `' ~- g我们可以看到,
# P9 F9 Y) v' e, g* I9 D1 J
7 b0 V$ c9 }* {: Z! F# \6 b5 Q在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
( u, D6 `) ]) _; r  h4 T7 n* t. ?0 d9 Y. T/ j% L) F: m
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection$ A; W3 N, E- c. O7 W
. R# {; D( E& ]" R* M$ e
我们只需要在他的所属dll后面加个20 90就可以了
1 _+ k2 D) [) Q- V( i: }8 N# f- X: C6 S" c4 U' `5 ?4 }8 @! f) }: m
卡巴目前还不查杀此免杀方法; s4 E, `$ |: ^, r

0 J" _8 w) d" x7 l2 {6 F: O0 s- ~1 {; V( }) r0 W
唧唧歪歪这么多,打字有点累了4 a8 q7 G% U: r1 H" F3 }

6 a5 i0 p- g4 R# }3 c; W0 R+ \# e以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
9 w% c1 B0 l: D+ W: H7 Y3 Z0 F! c2 G! O$ v/ y; ]# H5 |" a8 {
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表