返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,, h* a9 B2 P1 ?- H+ s

# }; |1 E. o- m- Y. O' c特拿来分享给大家。/ w* o& ~, B( e5 a

/ Y$ d% a2 [& k$ `今天我们不提我们国产的那些杀软,真的垃圾的要死,3 h' N; U6 x* s$ Q! a1 w( O
/ m7 x6 @% H& f" N; `# I/ y" o
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表3 j; z( C; l2 k6 U  O& g, m
& Z2 F  b% T+ b3 v6 w/ Z
我简单的重建了输入表就把瑞星搞定了,
  p! @/ e6 e% B: N5 Y/ y3 F7 t8 [+ E. {% E
失去信心了。我曰
/ M9 Z; k( a5 E5 l1 r
( j8 Y& q. Z: e  F7 H+ I今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
. B& y% Q( x# m( H% f, a; w+ ~0 s7 @' l! R0 M
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。" w# Q" ?+ v7 k" c

. D- \$ E0 I7 Q/ y外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。. a+ P8 x: E  n7 ]# Z: ~0 u4 ?
9 v( q* X) u( X( O/ g
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低. [6 u7 C1 Q$ K, F
$ y% d2 y$ B9 e9 X" H. h, q4 X
过了以后再调到最高,再做免杀。2 L& C2 i- k) ]

( K: O+ L& A4 V5 F1 z& O0 G以上是废话,8 s& e& ~4 S/ M0 L! s
- t- C" G; |' i+ v% t  m
好了,下面我们来说下常见的免杀输入表方法。
/ t* D1 _* [, H: w+ H; D3 |9 [9 C4 Z! h5 o+ c/ x& h, w/ S
一。移位法* D! u$ a( y! P  _0 c3 {) ^
/ A* G5 [+ M. A
这个已经过时了,我们的国产杀软及时的跟上了时代,
  M" \0 q: ]/ z+ A% m* t! s. b: c( u# ]! s1 o0 s
移位法在去年过金山和瑞星,还有江民都是可以过的,) ]9 N# u5 T1 {. |& ]
- U0 |$ _; n3 b) ?) w2 Y  T
现在的杀软智能化了,移位么?呵呵 ,追杀你。/ D: u5 t6 W' _+ U4 K" [
) ~* T/ t; G  I& D( W2 s  D6 O# y
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。5 K, G- J7 o: g8 d! _+ |3 |

+ B* Z5 P( q5 ^2 o二,重建输入表6 h9 C: c  k  K* s  X5 |! C0 E* n

' r0 r$ E9 }, Q; K. g) O7 }效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈. r: `5 c8 a2 j/ Z  v# x/ Z

: q6 C' X# t& U这里我介绍下,
3 O  K! b; E' R! \) E: P% N' i5 D8 G' Q
用到工具:5 R' E! u" k; h2 s
importrec1.6" R, K! T+ V3 L- D" i0 ^
od
; K6 q$ B( {) Z) y' Vc32asm
1 x6 ?- j& [5 W+ m, Qloaderpe
/ k5 M8 M/ u; c* u, e" Y* h! K" K7 y这里我们简单的介绍下,如何重建输入表
+ P! P! k( ?4 e0 p; {5 @$ x5 W, t# ]. i( Q- M. F" [1 T. t+ r1 Q
首先吧文件拖入od,打开inportrec1.6
; G5 C! F' L5 ]. X  w
/ o8 [; Y! X" X  ^# b! ^5 Y: b+ v- F如图 选择拖入od的程序,6 h. Z" ]' o+ ]+ T3 J& W. I
( w" A4 S; h2 s; w1 y" D+ @* c' ~

$ }; I: r7 N- J3 _: g& C这个时候,我们打开loaderpe,
* I) z) v- \+ l9 v4 Z  \9 f# K
$ d; Z1 J$ N: k* _" _拖入我们的木马
/ N6 I" }' x2 o( B7 p* Q  c  Y5 [( f' ]8 T1 [
选择目录,( U7 ^9 K* R( U; `$ |6 V$ Z
8 ^  i& U$ l5 P) x" @. C
我们看到导入表这里。。。
/ D  N- \" ]7 R9 \5 ?5 z& p# c" O( H6 K) ^; Q+ v
如图:
' E! t% X  K: D0 r  r0 q* a
0 P, R/ ~8 P. B5 p1 h& q1 L( p5 D
RVA地址是0001D000  大小是0000154C
1 C& N. T# I+ S3 \, }0 G
0 A" ~9 f5 A( ]9 k( m" h  b& X好的,我们把这两个输入到import1.6里去2 F3 v; o/ x# t

2 D( ?! a' z* y就是在“加载树文件”那上面一点 $ Y' j, }. ^6 L" J( `! U* P
  Q  |+ Y; V4 A5 m4 I: J6 Q
输入RVA的地址和大小。
' @5 h8 S: Y( m9 s  ?: f) x) s& }9 W; r( x6 J0 A
点击“获得输入表”
% D1 R) L/ W: x9 s4 w1 P" C# N
然后点击“显示无效的”
' @. P: ]+ x0 F4 H
: m9 _- ?5 E# {接着importrec会自动列出  L2 y( z# A( \9 W" R5 Q' A, H! q
7 ^% M. s. y- A6 G- ~3 T& e2 r
我们把深蓝色的字体  右键   剪切无效的指针3 T' n6 r2 m' w# B1 a4 Y7 Z) @2 _

$ {8 o/ S' @! _/ W: x) A6 m0 ~7 y4 T+ e: N" B7 c8 W
最后,我们点“修理dump”; I- G3 ?) x+ u/ J1 B4 X9 c
2 {- g( l: n: Z
选中我们的木马就可以了
% d: j3 |  ]! o2 q; w- Y; J4 h( {5 r* U' f) s1 {6 R8 d6 k
最后我们要用到c32asm
  h* e6 x* s+ I; z2 Q2 q/ B. d7 d' @7 K0 P1 T: g* T% ?
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
% ]* f! u# q8 D1 f3 A# i
$ E+ \: L/ D+ z0 P这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
. K, K, h- ~; A% r2 r  U
: x% m/ D3 z2 W5 P) H这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
5 a. ?. V! {6 ]( E# p6 q9 S* x! E- N" {3 R, o! ~4 n( u4 [
我们把马子拖入od的以后,打开了importrec1.6
- o  z  I, W+ N2 i, ?$ b5 k) _' @: h( y. m$ p; R1 Y0 q4 {2 Y' D) g
在选项那里,选择根据序数建造输入表和创建新的IAT
) K/ u' w& A$ [% w0 F& i
! H5 M# G8 q# n; N/ o: a8 e/ _如图
9 E& q! F5 H5 c1 ?
. t  x" X$ `) A0 b! |7 G, Z2 c
/ N# w. t0 p6 @& S- |. e以后的步骤照上面的方法继续就可以了% n: o9 S4 m: D+ x/ Z4 n
7 @5 e! x  F& L  K# S
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
4 S& T2 E$ T1 }( h  I
& E  Q+ L, F$ F0 f( K4 o) c4 K" t/ }& G因为kernel32.dll的大小不一样。
% R* j3 h; w# O
; E: C8 {+ G& H3.修改originalfirstthunk
7 Q& Z3 k2 g: L  T  \3 {- u, i7 s0 T0 O( P, V& a$ v. K
如图所示! Y( J5 m" G8 r- D6 x

. i4 M3 G( D0 y& V1 j/ c; L
1 N; }6 c" B# K/ D1 _7 v我们打开loaderpe,依次点  目录--导入表(后面那个横线)
! z; L* S& T- e8 o: u* Y
1 f. k; b% m+ G5 b我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
3 }2 J# C4 B1 X' A; a/ v% B
" z! o/ S0 y$ J1 _/ s- {' I  S2 e3 V我们右键--编辑--把函数后两个00修改为FF6 K' `) b5 @! _* |2 b8 N

: n# t, r+ A; {) S% b8 B5 W4 j1 l0 B7 X3 {这样可以过小红伞查杀。  虽然会出现错误提示, l8 `" w, D- [$ u# O9 v' r. Q

* B0 C% U+ I3 s" I# A( E! ~# H1 O但是不影响木马的功能,不影响上线。
$ f! p: y# _8 r& w9 P% b
" x2 R) z$ s. z: Z) t- _: O8 E) L4.dll后面加20 90法过卡巴查杀
3 c: X4 O- J' M  M, J, B7 D! B( c# e# h. f8 B2 I. \
需要的只是一个c32asm而已,非常简单但却非常有效
. m; M! |) f, o, r4 L* B( J2 U9 v& F$ n$ ~6 O' s( A
如图
9 E, D3 n. f: C& F3 X. w9 J
2 m5 q! V2 W3 E% z( n# a2 c! X2 Z7 N

% E, V: ~% e- v3 {4 Q我们可以看到,4 q% h4 x. A! v2 Z: j8 I7 r3 B7 K

% m+ L+ n+ h( b* g! D! X9 o在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 908 w, d' f) S% Y8 r6 A6 s! F& i, F, s

2 _0 J3 ?/ n3 I* W9 i5 ]* m这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
. s" `( {/ e; A' c0 j! Y' d8 i0 }% l. N" a, n. S/ U
我们只需要在他的所属dll后面加个20 90就可以了
3 b) q2 w9 S* [5 \8 D$ P$ r" M% q" e4 p( n. z
卡巴目前还不查杀此免杀方法' ?! u- P  j( ?2 [) z7 {

+ x2 t5 x0 L* F+ V  C" x  p2 X" k7 M% p
唧唧歪歪这么多,打字有点累了
9 f8 ^) M9 F9 ], ]' f
9 J8 r) \9 Y1 _, T以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
* a' a, Q3 W4 [. p
* n, F" y* \4 L% m$ ][ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表