返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,* ?; Q* C9 E" n# F

( r4 c1 W+ Z% _3 w3 _& ^特拿来分享给大家。
1 b* I9 D3 n4 f+ g4 i6 h! S% |* P  C8 }% k* ^* J
今天我们不提我们国产的那些杀软,真的垃圾的要死,7 ~3 E1 j- k. t7 U' y
/ X' s* O# k4 _' ^. G
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表, }* ^: x$ L$ @& z; w" u& H' V
! H2 N$ L9 N1 F# H& T9 X
我简单的重建了输入表就把瑞星搞定了,
6 l( l& y! t3 R* D$ f3 X, u; Z
, e8 I5 s2 Z& _: |失去信心了。我曰8 x) z1 T3 O  [4 z2 d1 ?

* F9 I0 f% `8 \( _  D* |今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。% j- b0 H" A2 F$ H$ Y: ]/ B! k

9 ^' c0 n% ~" i4 T! {) ~, H# Y首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
. f1 H6 c# U* @0 X* v- [, b. X2 z3 L, @' ]1 H) ]6 J( P
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。% K3 a. D  O. x0 b/ F

: N: \6 c7 g8 p1 \: j1 N# V高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
, Y7 v! R) J; n/ p  H8 H# Q9 e2 Q. V8 e% q9 X" ^$ X- {; _
过了以后再调到最高,再做免杀。
" z1 p3 e& j, E( ^
% F& Z, P$ y5 D; s1 L: n以上是废话,# P6 J  z  E0 _& E3 d

0 S/ g. A9 h/ Y7 n& \* g好了,下面我们来说下常见的免杀输入表方法。
  D& }4 t. [3 X, y. \1 ~* G% a& K$ R4 E$ ]) P1 F5 y" Z
一。移位法4 S, w- u+ h: r0 D9 u5 P+ f
3 p0 I8 b5 P) z. q
这个已经过时了,我们的国产杀软及时的跟上了时代,
) g8 i' a( U5 |* y7 {1 I
+ X: ?3 C% Y7 L' _3 |移位法在去年过金山和瑞星,还有江民都是可以过的,  A8 H- @: F0 L7 {5 Q! }  t

. o7 C$ E  ^3 U4 T7 @& ]  X现在的杀软智能化了,移位么?呵呵 ,追杀你。# x& ^; p$ `! J) Z
/ c2 d7 p3 Q1 A
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。" ^! E+ H( G7 J1 o
. T" u5 s: y- W2 e
二,重建输入表
& m* [7 j6 F& t9 x' G$ F7 D. x3 i6 t" }% B1 z* l) e$ Q0 s0 A
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
: Q9 x& y" c/ W7 ~* i5 c( L6 _" V6 ?2 a. G9 c
这里我介绍下,: i: l3 V/ d; n* h
! x0 r8 b* A; s" z9 n1 y
用到工具:, r7 |, {1 }: D* }: r
importrec1.6
$ q: S, h1 V3 B, R' J/ c$ Mod
5 F! x* p. A% @+ e7 Z5 x' ?c32asm
& ^/ M  N5 z; @* C6 Iloaderpe& E8 n; h: z7 k4 x
这里我们简单的介绍下,如何重建输入表/ {6 d4 F( X" H9 \$ e1 s8 B* h8 O
( j  M3 J: B1 {/ K$ h+ {: k" v
首先吧文件拖入od,打开inportrec1.6
: ^; M) x5 {0 v  W/ n+ i( @4 C+ l
如图 选择拖入od的程序,
4 t2 \- ]% @* Z% T
2 Z" |' E7 N9 `
$ b$ Q( n9 ~8 i6 O, w5 X这个时候,我们打开loaderpe,
5 @) p4 c1 d0 O% j& X; a- P- X, t2 v, M
拖入我们的木马
  R; A1 i4 c5 z! T( l
& H/ g. A, H, G: d. R9 b选择目录,
, s* K# {- E: ]3 P( d  l. z$ q6 o. T$ E+ v  ]" i7 i6 {3 ^5 t4 O
我们看到导入表这里。。。9 X7 \! j$ P, e9 Q  g$ r, J
! n& w# m. y, i" D/ f
如图:( G1 Z. G* o: Z5 Z' z

$ f  z# X- ^2 n& Y1 ^: W' R9 ]& h2 t& ~+ U  y2 \* G
RVA地址是0001D000  大小是0000154C; D9 ^, a2 P( Z9 R' r0 B# g
( x# |% b$ O+ M- z7 G' U
好的,我们把这两个输入到import1.6里去) l& W$ ^( \7 O5 L* l

. u' u$ ^* q+ v" n5 r2 F3 H' m. U就是在“加载树文件”那上面一点
8 o' \3 w" g1 I: G' o/ k8 ]% s
8 W' Q7 d& F! a) q6 R/ y0 L输入RVA的地址和大小。
% m' ~6 m6 o$ n3 b2 l; L  @$ m
, s: {& }: z' i点击“获得输入表”
, @9 B: r* M; E
3 n  @9 L; j' o' d- F然后点击“显示无效的”
9 m% R2 J- o# W2 ~- z2 i! N4 s" _& g9 M" g
3 m! J0 q4 e9 S8 e7 \1 s  Z接着importrec会自动列出
  |: I4 `3 N4 L) n
: ^7 e9 f" k& ?# [0 W我们把深蓝色的字体  右键   剪切无效的指针
0 k( M6 F) `) H7 u" Y' R/ L+ B7 t2 O0 `

! Z; d! {5 D, F# p1 s; v最后,我们点“修理dump”; f5 |7 p% E+ j. z- t* E" p- |

$ \, r; x3 j. q5 d选中我们的木马就可以了
* |( g# t# |/ K3 V7 I( ?% Y$ p" j* f; {1 b
+ s; X5 T! z5 [! Q  i) n最后我们要用到c32asm
5 G- J/ {* {! d: U# n& }* x$ ^: O
; ?6 p. D, X- h+ w我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。& e/ l. T) h  T  {3 G* z9 }

; \3 a' o* a/ m' M! t这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
& e9 M0 c% M/ \# x, n4 v
8 q3 E5 Y# O9 `这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
$ x. v4 q4 J1 _, U6 d# s/ s% a; I# M' z1 C' C* v3 V. {
我们把马子拖入od的以后,打开了importrec1.6, m$ s* E5 D" [& {' L7 [
/ ~9 o3 G" O: E$ y8 R( z  B
在选项那里,选择根据序数建造输入表和创建新的IAT  U2 E) t/ ~- }# o

& R, b) U, j. u" k4 F9 n4 |( k如图
$ X  [4 U  k5 l5 ^0 B) O- s% x+ g
: P% A: F& m* m" t
' U6 c! X2 f7 ?- Q2 u! Q" \以后的步骤照上面的方法继续就可以了# ]  N/ {  \$ \
3 d9 F+ h; E0 a
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了  i/ R5 o8 m) l/ @
0 Y0 l3 s- W/ C' ^: U0 X, a
因为kernel32.dll的大小不一样。
+ |% |# q+ |$ C' j1 T1 c7 s4 E4 I9 q. I8 |  N" ]/ C0 y
3.修改originalfirstthunk4 v  ?, J: e( J: h
5 l, W; U8 r* y* ]3 x- ^& L2 r
如图所示7 H! L1 n! g! {. t) T7 {! e( |

) z, n6 ?8 h0 p; `4 \
+ A; T9 h1 L$ I6 g; I( W& L我们打开loaderpe,依次点  目录--导入表(后面那个横线)2 R+ ]. v5 f1 j  x
( u+ K0 u1 o6 ]$ F0 ?
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
0 A+ E  w: I3 O- ^1 }- f- Q* V+ m- k
我们右键--编辑--把函数后两个00修改为FF5 v, m, t' O  t% H1 c
2 m# R& T' _9 G  }2 Z
这样可以过小红伞查杀。  虽然会出现错误提示
2 O% o3 e; Z: T5 W$ V
. b, s. G5 j3 S+ G" R但是不影响木马的功能,不影响上线。9 _6 d8 p7 I) h2 y2 }
2 @; |' l7 \: N3 a4 |
4.dll后面加20 90法过卡巴查杀% @. L1 }0 o: J/ K

( D( E1 H" `; K8 _* w, ^* s需要的只是一个c32asm而已,非常简单但却非常有效8 {4 V* ?; B6 \! b
7 N" L& _# j. d1 O% N2 Y
如图. f0 _3 Q% y) I! u" I0 d

/ [! M) B1 K  P
0 V$ J3 L* X7 Z3 k
" x! f1 v. |/ M, ]我们可以看到,
' t3 E5 }2 i9 u) p7 J: B/ v7 S7 u' N3 A3 o! c
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90% b4 A5 A; r3 O7 I/ ?* w

6 `! L9 g% L- y( D  f9 ^$ R3 M这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
0 d% ~9 f% i/ B5 ?- p# ]1 c8 O) @) ?% `* }; y8 F. b0 y* n
我们只需要在他的所属dll后面加个20 90就可以了
$ k8 A1 S8 x) Q9 F$ l% s* J
! w8 V. T3 v& C; n6 `% Y% o: E卡巴目前还不查杀此免杀方法
' Q$ Z/ B& k- P3 n, D
* g9 @* t3 l8 Z/ O( X: {, W1 F
$ t& X7 r" h2 A& d/ y, z( w; m唧唧歪歪这么多,打字有点累了% o. v8 U* V! x: y1 Q) q+ N( z: Z
8 @& T7 J0 N* ]/ S* e
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
" F6 t- ~" O, T( g  E. j: ?# a5 Z6 N
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表