返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,4 ~" ?9 [  G% I  u. H. _
- R; c! i% H/ _
特拿来分享给大家。3 B$ _+ l' }3 v
! Q' C. U& f+ j# s* g' b$ i! b
今天我们不提我们国产的那些杀软,真的垃圾的要死,
8 \' E# c: `. ?/ q1 ~0 A+ w7 a5 O. o; q! q3 M
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表+ l  e0 S% h; _- H0 G' \1 r

2 j8 `- [0 c' u- a9 f( \3 m1 |( u我简单的重建了输入表就把瑞星搞定了,. }$ O/ H5 P9 l) C& l9 s  {

& K% u2 ~) {9 C8 Z# z4 y失去信心了。我曰. x, x7 l6 g4 f* w1 q

  u$ P) X% C7 r" X8 z今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
' q9 g) ]0 m7 C$ ^6 F& J0 k, l: a% r7 w) W
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
5 ~4 @0 ^! n0 k$ Z0 P! B0 j9 D' L% m! Q8 k
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。- h7 @  S' O8 K2 P: j# m% n

4 x; \4 `* [1 v$ z高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
  g5 ?% _' y) Y" [
% \! a" j+ f: N9 d8 p% V过了以后再调到最高,再做免杀。
$ |5 D9 o0 V+ \& g8 k( ^' B/ U, J4 a1 \  j9 E
以上是废话," O, @1 }/ q1 ^! \

; i3 b6 w& }2 x( x: r4 ?  U好了,下面我们来说下常见的免杀输入表方法。5 q" i6 s! R1 G

: Z- A  [: A' {: l9 ^$ H( w一。移位法
6 g3 K1 e; W) R  }6 e
! b4 l4 ]: u. l; @7 y这个已经过时了,我们的国产杀软及时的跟上了时代,/ u: D% y( W6 J6 g

/ o! g! x% R9 H( k. `6 u9 E7 z移位法在去年过金山和瑞星,还有江民都是可以过的,
) h$ u4 }6 V* S8 L, _9 O  j3 h7 E# F( @
现在的杀软智能化了,移位么?呵呵 ,追杀你。0 M: S* V* o% `+ n( u3 H/ V

. }' @, v* ^) |) S6 }如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
  `4 _, [: I* L% P
7 ~% C% G2 j" T" E( x# y二,重建输入表. A: k- O1 `1 G% f3 ~" S) `

0 Z( V1 F" o1 W效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈" R& _% s% C4 V9 d( Z. E
  V5 C' Z( e  r" N
这里我介绍下,0 D9 c' ]5 N# j, a7 W

9 K1 \8 n2 H# u7 e4 H用到工具:
2 \  ~( O& `5 Wimportrec1.6
( E! ?2 u9 T- z3 C- Ood. g6 T9 {3 [/ O. K
c32asm$ h9 R! ]7 Z1 e1 K
loaderpe6 H& V$ x. [! u
这里我们简单的介绍下,如何重建输入表2 f, V9 N, Q5 j9 g) E, Q- p  v
4 D- W5 c  n1 V4 i
首先吧文件拖入od,打开inportrec1.6
+ [( A. a; l: A7 P" ^1 O
& e, \; B+ V' ~1 @/ c: m如图 选择拖入od的程序,; v% m& E; D7 e2 g% i* q$ l

6 p6 ~0 r% v0 c
' L# F  q! F. i! w7 b& Y% d这个时候,我们打开loaderpe,4 r/ ]& x- i( @( }/ ~  |

4 s: ?& U- C( y! N3 L3 S0 l) M拖入我们的木马
/ T! g  d9 y9 D' O3 w
: ]- i+ C+ w( Q% G3 l选择目录,
1 }7 U, [2 E: m* R( l- M4 Q- k0 v
我们看到导入表这里。。。- G1 y1 |1 p* o7 d' x6 A

2 I8 c$ t' i8 T' _; ]如图:
, H) T7 n* `5 \3 f6 F: Y+ S1 `& Q" r) R# a
1 ~3 f/ m( h+ \/ |9 v- S% R( y
RVA地址是0001D000  大小是0000154C+ y8 L7 F' T$ h2 E, q4 ]( @, }, M

- K( e. L5 @& }$ E0 y/ n好的,我们把这两个输入到import1.6里去
, l; D7 R: }8 z! R( g4 ~" \* v
) X' m; m6 ^0 g就是在“加载树文件”那上面一点
) `8 M0 K) T1 F2 F% ]4 v; r8 S+ E. |0 K( f# k
输入RVA的地址和大小。
! j- U4 _% y- C) j$ |, ]$ m' g) _1 A# a( k/ f& f
点击“获得输入表”
* H, n2 d) v$ {6 Y7 }/ {
; m5 H3 J  [0 M) g. P然后点击“显示无效的”+ L8 i1 \+ L! _5 u
' P/ ~/ P" E: u" W3 N  m7 ?% }
接着importrec会自动列出
% C1 i, U8 v: }$ m: U2 W3 a$ Z  ?+ w9 i& |
我们把深蓝色的字体  右键   剪切无效的指针
$ M1 P! z1 a- R* D% c3 {, I- E) ^# S8 b& x0 ~
! ~+ c8 y$ a. N' k0 w
最后,我们点“修理dump”
! }4 W5 u# c, d( o4 P1 _. O) E% ~9 P% C+ o; O/ G6 v. ~! Y1 I8 i4 E6 U- q
选中我们的木马就可以了
6 x) y; x) v. A: J! I  W
0 z% \% R3 X9 A+ `6 u) n/ }最后我们要用到c32asm
) n( U$ T5 \: x" t! Z: F# f# T, A
) C/ }' p6 E) H我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
8 _* W# y; ]$ P; X! h; |
  I. l) F! @& {; u5 I这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)1 y2 \6 s; E  o
$ l$ G2 a: L! I0 k6 a  ~
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,& b7 o( m, _! h3 @7 I: s, Z

/ `* h: s! ~/ H我们把马子拖入od的以后,打开了importrec1.6
! Z/ j# c1 H3 Z7 I$ ?& Q% i! N2 W& U/ }- M. m
在选项那里,选择根据序数建造输入表和创建新的IAT
- P9 \2 l. p2 N' r; D1 l
# l; I5 U  J8 q. _6 Z- g如图7 [7 {! S' e* d# e

! ?* `; q5 [+ F. F; Z
: C1 u' f: N+ h以后的步骤照上面的方法继续就可以了
8 D( I, }# s; D* {/ @1 M6 H1 V& P+ Z7 z! G" H( i
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了3 P  K9 }) ~: l: n
6 R+ n+ v5 n) V' a4 E5 R- F' [
因为kernel32.dll的大小不一样。
4 y5 P  b9 Y( s. r5 g0 c) p  t6 C# o3 w( G* {  V2 W
3.修改originalfirstthunk% R  X3 Z/ j0 [# t
/ v# u, ~  z( F: q! S2 X0 R( i
如图所示) ~( x: T( l& J9 p2 G1 k) X. A  x
3 G$ I5 `' z1 A- W+ U) o% A

& o! v, c) ?6 {+ q6 a- x我们打开loaderpe,依次点  目录--导入表(后面那个横线)
$ v- Y; U; x- L! F+ e/ D' X  Q6 g: f8 A& t6 q  m" B
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll3 c0 e: R, o8 }& I+ C8 z
* f$ X% `& Q" {3 s( ]
我们右键--编辑--把函数后两个00修改为FF
& Q4 ?/ v' O: x# K# o9 o7 k
: u3 d6 l2 y' l5 k这样可以过小红伞查杀。  虽然会出现错误提示. C4 A' b0 j- M

9 `6 G3 B. t' N  Z& y; k$ F0 e6 |但是不影响木马的功能,不影响上线。! R( l# u8 s3 Q+ ~% k
! ~, J  c$ i! c8 ~. P5 b% G( Q
4.dll后面加20 90法过卡巴查杀
/ U" n- ]' l% t" h; {# a5 S3 J" X
; _8 ?: u% B6 B/ W; J; {( A需要的只是一个c32asm而已,非常简单但却非常有效
; S. n4 r5 |$ M% ^8 v/ S5 ^5 i
3 K3 I$ [- d2 {! \% i  C0 k如图
& G8 O3 y. @8 t+ I+ b3 i0 v( ]
& {* U$ L7 l4 i5 B  b: Q' v& u
9 t# i3 B) a& m9 {5 K* M
我们可以看到,
* w/ [  |. l" E- d7 x" Z  _: N4 `% Z( G( S5 }4 s, a
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
4 T$ y9 ~7 o1 t0 E% t4 d
6 ?7 b4 h6 h1 E  r" n& f8 A这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection' L8 b+ W$ `4 Q* O9 Q" r' N& D% Z
4 u' i. D; T, D, S4 a
我们只需要在他的所属dll后面加个20 90就可以了8 _9 Q  n7 d: |: y/ Q
" \- u6 U0 x& }( n
卡巴目前还不查杀此免杀方法/ \" }, a. T  D8 y" C7 m
5 g; l" E9 X5 ^  z! I

: M! z9 n$ D/ W1 K0 J8 I2 z; m唧唧歪歪这么多,打字有点累了
. Y$ p$ q6 D" K
. h. B- C6 [% c% c4 [以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
; [# b, c/ f# x( ^, l
! y0 p8 F. E' y# P. C6 K6 R' t# H2 c[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表