返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
! z5 o7 E1 A8 k2 N! q' J
! B- T) _6 ]: v特拿来分享给大家。
$ B& H/ M1 ~" Q8 ?
; G# f+ M' @0 @% B  w! O今天我们不提我们国产的那些杀软,真的垃圾的要死,. G2 e: i: T- C+ ]6 w9 z: J

+ \9 m, L; R7 X, o) L上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
, K6 b6 J- c) M
, P! `+ ~' r4 l3 v* k我简单的重建了输入表就把瑞星搞定了,
) b3 i/ @" Z' `% `
3 i4 h1 _$ b3 G+ d3 n失去信心了。我曰* H& c- W  t5 {( P6 q
9 t5 N; Q# P( k  a
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。  \6 ?, |1 N! u% X9 d

& X* B$ `) t- a6 Z' l' c. S' ]: W首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。( M# i9 C: f# b0 h" b2 c

2 y+ M9 f- G: v8 I: |外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
" K7 E( u( n/ c9 p9 d2 I6 J; n8 M+ ~! f2 \1 R2 d, A, D
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低9 ~$ _, c! I: R4 X5 Z8 Q: y, l: f

. r# d/ P* T- }8 }6 G过了以后再调到最高,再做免杀。
4 m" A/ U5 P% Z/ ]+ t
2 h: j5 T! v8 Z" H9 M3 p以上是废话,
3 p" b8 {2 s5 W$ i- ^1 y! ~/ ?- v4 G; O0 M! n8 ^3 x0 i
好了,下面我们来说下常见的免杀输入表方法。* J+ G1 k0 R1 e. O/ D

4 f/ p3 C0 ?9 I4 {! O# @, X7 T' x一。移位法
; d. }+ ^( f" f3 h* e+ s* i1 y4 |% s
这个已经过时了,我们的国产杀软及时的跟上了时代,
) S3 |, l/ b8 D" X" E/ d0 D5 d) D! R9 D
移位法在去年过金山和瑞星,还有江民都是可以过的,) E, O1 V* m2 q2 e7 n  ?4 C

! f' X" u  \! O* _% X  p7 x现在的杀软智能化了,移位么?呵呵 ,追杀你。
9 m3 g- }* C7 k) @
3 C- D* t$ P% t如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
* j; Y6 _  y3 b9 D" J3 i& t- e( s0 s
( g' v! g+ h8 u  ?* M1 `2 S二,重建输入表# X4 J7 U5 H! a
, p& i+ g7 `* F7 I8 }( {
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈# d! c5 |% @, Z

# C9 |. |3 L2 x3 G; W这里我介绍下,) T7 Y; S8 }1 T4 e2 X2 I

' y9 V# N, S7 \用到工具:! |0 P$ f# C& W
importrec1.6# G" l( g3 M8 H: J& j3 r
od
9 ]/ a: |& y% ?. }% p3 Ic32asm
9 n0 @4 ?8 C4 F  x1 nloaderpe
% u/ a/ j# |& w) n% E4 b这里我们简单的介绍下,如何重建输入表
. h) y' _( a  G" y. X; |8 ]! i$ q" M7 O4 h9 Q7 ^: I0 p+ Z
首先吧文件拖入od,打开inportrec1.6
( K8 G* g5 C: @
6 k- G# q+ V/ r& u& |9 C! {; |如图 选择拖入od的程序,
5 F& w+ |# S* S1 j. C! ~. w5 ]* o5 L  z6 M0 F% W4 T

, M2 `, i  k8 {3 x' b这个时候,我们打开loaderpe,$ S6 a6 {: }9 n  W. Y. e
9 d3 H. }% p3 N$ x4 ]* P
拖入我们的木马) L& Z( u9 Z1 \. M8 t: [
' J9 S4 {) J/ j) l
选择目录,0 Z7 ^' a5 w$ a: D$ F
3 X4 `7 a/ m) o
我们看到导入表这里。。。8 ?& `* G$ b" F
( G/ k% h, w3 v
如图:( A& T8 ?. v9 W) z4 K  x& X
% s% |7 r: H( d8 W) L
( \" G% v2 q* i( z( U6 o) |
RVA地址是0001D000  大小是0000154C# @2 ?6 w2 d; Z2 \& {" M6 b9 b
" L! n7 s6 u- F( K! S6 w' D
好的,我们把这两个输入到import1.6里去) o/ m* ?+ @9 U
9 y) d& [" @! l+ y) F$ n
就是在“加载树文件”那上面一点 ( a( ~' b3 {$ p; t) @* B1 R; ]

7 T) l0 z% B+ Q5 m; ?6 [; A! k! q输入RVA的地址和大小。  r1 V! M7 m7 u8 U
  i* X+ i" v8 V3 v" \
点击“获得输入表”$ ^* e9 y$ H; P, W9 L: `

, ^2 `7 K4 v( H6 L然后点击“显示无效的”
8 n" Z) }7 j5 {  q7 _. |, ^2 \
接着importrec会自动列出
2 P& A$ D8 s1 G4 h3 L3 ^
: o6 l: w. I  ^7 s; E" W$ G我们把深蓝色的字体  右键   剪切无效的指针
7 |# U2 g( m' P# C- c8 [" s+ m, G. g3 k5 T* q9 X3 \! \

5 J9 j- y: w* H1 O1 I5 e  J最后,我们点“修理dump”
" @7 L$ U# w8 d5 x
7 c, ^& m4 y! `选中我们的木马就可以了
% R$ }6 H8 O+ J9 n: M2 O2 A% d) _: \' Q8 m' T) I% d
最后我们要用到c32asm/ B& X9 F2 h' m, a) t" O. n7 K

' d; P5 }- X) F6 Y我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
7 j* c( Y4 n4 l+ }# k3 @% g5 }, D# O8 Q0 a4 [# A
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
2 t3 m6 T; \! O; G/ Q: E% Q
' H8 O( T* Y; r7 s, b3 e这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,) d/ K  n, Q1 {% Z/ Z& A
' y: P9 [7 l; h3 s$ ]7 A7 |9 |
我们把马子拖入od的以后,打开了importrec1.6
7 s- H8 m: A# S0 \8 h
9 p4 ?5 z  X6 Y/ p2 V) s# C在选项那里,选择根据序数建造输入表和创建新的IAT
: E7 ]- X# }  ]0 f; e) [/ t. a" {1 ]- l2 u4 k0 v! c* C
如图
. S: Y0 Z( O5 @. d$ Y# g: L0 P( y' K1 ~* `9 J8 |9 L

( _+ w! @0 @, z" ]1 \' E以后的步骤照上面的方法继续就可以了
+ Z$ S3 i) D3 X
- d# O1 q- S& l* v" m5 Q# F" x/ E不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
% v  R1 J% I; T6 E& k
) ?* A2 t$ S& ^, j- {2 ?2 P因为kernel32.dll的大小不一样。' z: c- a9 y* Z5 S7 I
- r, u# {1 L7 k$ s9 ]
3.修改originalfirstthunk
4 n" N  q+ J4 |9 q4 d
; b: p& v- [2 j4 G; V如图所示
# W) H+ ?+ l, C( R* p# o! F- y& z! o$ W
7 l) P% R2 [% p0 o# l6 H+ ~6 H. |8 j
我们打开loaderpe,依次点  目录--导入表(后面那个横线)
$ ?& v2 y: K+ l1 U6 |) D& \9 ~* l- b
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
* R3 U, L1 P3 G" R0 l
& o) u! }4 x- S) J我们右键--编辑--把函数后两个00修改为FF
2 Z/ _' }9 k' Z. X, j7 Z" T) S4 z4 g
这样可以过小红伞查杀。  虽然会出现错误提示' ?: X. {( w6 x, P
( h/ Z1 {: v' X
但是不影响木马的功能,不影响上线。* M0 u* I8 z# t
  f( R9 H9 l6 `/ e. r1 k* P
4.dll后面加20 90法过卡巴查杀% P. _$ R, L2 a% u  T- d# {

! I  \( T, p2 U需要的只是一个c32asm而已,非常简单但却非常有效
4 F4 w) W" g* L$ r" p2 [3 l/ ^6 c; C- o
如图
# N6 r  Y. @* h, r) l5 Q8 `- @
+ n, ]% b! D% u8 U% V1 g/ {& a9 z" I( J; R( Y8 J" O" X3 t

4 Q# R9 `% x+ l我们可以看到,
- l# [5 }# J" ?! j, G& R
3 v& ?# d. g7 x1 n, y在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
. n* d/ R: X' c. I3 `& y" D( H, l9 ^' w# J5 `% @9 W; t
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection, c* X, }5 |' ^# [
: o7 P# k( e6 A- A
我们只需要在他的所属dll后面加个20 90就可以了% r! {, p8 `& k& Y" N( t
' I* i$ I. d! o2 ^/ `- C
卡巴目前还不查杀此免杀方法
8 S  |- @9 O4 D: M
4 ^5 H* q3 k( |0 P$ a- p0 O
4 {5 K( S) X0 B1 X- `: K" u! F唧唧歪歪这么多,打字有点累了, A' t3 M: t1 x9 o  L! _: N

5 Y: t" V/ a+ O7 m: J0 `以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
0 k# @+ R. I& G# U( P6 K: v1 H2 c! p: E. T0 O7 q5 _. P
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表