返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
4 v8 v; C' P# O: \: v2 m! D, P5 _3 Y) ]8 f
特拿来分享给大家。
; S7 r/ ~% y  r4 p& }. Y
/ y$ t* B2 g! u4 @4 l8 P+ A今天我们不提我们国产的那些杀软,真的垃圾的要死,
! ^" F& W2 x# a3 {( k% s
1 j8 P' b, Y0 H7 }% m* l+ u6 N' C上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
7 w* m% c& }/ a* H
1 ]" n5 _, C& f& O2 {; k我简单的重建了输入表就把瑞星搞定了,
1 L) r  T; U6 _& B& f: f& k. d  W7 \8 t# U! I! `5 Q, q
失去信心了。我曰
' \" i& X# ?" r3 u. T" O
* |) Y6 X2 t+ m* Q  r" a今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
: \7 \6 g4 T" B: J. q& ~
5 H2 c( t6 t& g6 Y0 R9 u" \% ^" y, N首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
6 t3 _* t) D4 g. J. Y; e+ L) e# Y( I! f
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。( f) o- z8 u# `9 I8 [. S

1 m( E: A$ p3 s- c* W高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低4 H0 i* B* n$ {4 `
! a2 i3 y- E: a+ J+ k
过了以后再调到最高,再做免杀。+ r- H! Y1 [' ?; |

1 _% K2 }1 k3 k, S以上是废话,
5 f+ t  m/ B9 ?  f: r! T
8 A) m& Y( }$ C& ]% T/ ^好了,下面我们来说下常见的免杀输入表方法。3 b: u5 |) B3 ~

. f7 M; ?- ^: a4 C( N, B. w' I) z一。移位法1 R3 Z9 \9 H" G# l5 H5 J5 z8 V
# W0 {% G' ?/ p6 y
这个已经过时了,我们的国产杀软及时的跟上了时代,
$ v) j+ {6 _2 k: L' _% V5 N) H. m9 C
移位法在去年过金山和瑞星,还有江民都是可以过的,
  q, k9 I, Q' Q; }- K# Q5 e
  ?: D$ E4 E+ g) l5 J现在的杀软智能化了,移位么?呵呵 ,追杀你。5 T: h* p1 P( q: _

' l7 h4 f. l: j如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。5 {  f4 d. A+ R+ M6 A, v

/ ^3 P; o: ^4 b# o# N* R6 U二,重建输入表
! @& L7 L# d' L/ m4 J) K* ?1 H1 b* o& C
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
4 _9 H7 v7 G1 D2 e. y
' ^" M" B  ]! `( l' n' L这里我介绍下,. q0 u6 O5 {" w. L8 N' V

# |1 E5 T' ?; O& `& n8 k用到工具:8 w8 u4 f9 X! t# p  x8 p
importrec1.6
- @& b, B8 m9 e/ dod
& v4 E- i# |* I! T' cc32asm
# v9 I- e; C! W5 H+ R/ Aloaderpe3 G/ _: \3 g+ ^; o4 u# H3 h
这里我们简单的介绍下,如何重建输入表
& Z. f  f4 p; K7 ]3 c  I3 K1 O
6 Z+ t/ |3 [0 D" L9 c2 d' Y/ M首先吧文件拖入od,打开inportrec1.6
$ O' O1 e. L) b) S- s5 E& `7 t# z1 C/ _6 O  a6 ^
如图 选择拖入od的程序,
6 M- r& u) e* s5 O2 M" z! u+ a7 P0 V: Q, }3 s& b5 s7 O! V

- t; N9 L* u/ y7 p" k$ z* y这个时候,我们打开loaderpe,
1 T5 _. t: h0 j6 V3 Z: Y! D5 W' w/ }" h
拖入我们的木马
% Y0 [4 s, _* c- D, D2 W: N7 P) k0 h4 D3 r' A! _2 l$ d
选择目录,
* W% @' f" A: E; e4 p; w2 K+ k# X* U& a7 @7 t8 o
我们看到导入表这里。。。
, @5 s0 X- c! B5 K7 L9 i! ]! N& ^/ K% P, u! V9 i
如图:
2 m' x3 f! S& W* ~# L
* l; }& M; e8 @5 T+ V2 v$ k1 f0 \- `5 \! u) L5 G3 f
RVA地址是0001D000  大小是0000154C% z8 U# U+ ?  O

! c, W0 f7 f- n; g% B3 s! w' H好的,我们把这两个输入到import1.6里去# ~1 h4 T( |" n! ~/ v" ^/ r
% x5 a3 K/ N8 T9 A/ v" C
就是在“加载树文件”那上面一点
% ]  n$ ^7 Y* R' S  v( S
: L3 H6 N3 f8 K! w/ G2 O; _8 o' i9 e输入RVA的地址和大小。0 X6 c2 R* d! K( g
; v: n$ a; n+ ]3 d
点击“获得输入表”* `& H$ G5 |8 j9 i0 F, m  _

" y: r5 ^$ m! x& y; q4 C. J2 W! n然后点击“显示无效的”* z5 G5 k- E' c/ C. b# E

: `( L6 F4 I) o接着importrec会自动列出
# c; S% ]8 e/ `9 Z
0 \. J$ u2 M6 Q; l我们把深蓝色的字体  右键   剪切无效的指针
" L( x# g% ]8 D; J( C; R  p% n. Q( N: p& W* z, Q0 X2 L
" A8 r7 z; x* Q" d7 W8 w8 i4 q
最后,我们点“修理dump”
7 J4 @0 Z) Q3 j8 G7 Z+ K  H6 c# ~$ J: K) T. j. F$ |/ q3 w  {
选中我们的木马就可以了
4 |# x) M/ o* |3 ^2 y6 M3 L+ U# Z- K8 k2 O
最后我们要用到c32asm
& E2 [9 e. q3 w" C. O
9 M) E$ T( ]$ E! z/ g- ^我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
7 x3 j8 w6 ?/ Z9 D  ^
3 u  D' @  K3 Y9 w! k0 a  h这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
! h8 x, l2 n+ m
& T# `! x4 ?+ J5 U/ l0 W% j这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
$ y. ^$ i% ]/ m, r# [: A) T. v$ t7 j/ D6 ~, k, s+ V
我们把马子拖入od的以后,打开了importrec1.63 b8 Y0 z/ @% ~$ G
  H0 e% c4 c* X5 j: {, |8 \; p
在选项那里,选择根据序数建造输入表和创建新的IAT. f' k- q" b) w8 }* u! m; c

+ _5 O; i; h( \  k, j如图5 t  P" K- e7 L$ w4 i) N" n/ A0 i0 Z

, o1 i4 {+ Q8 S& S) C
' s7 {6 m& K$ a2 t3 c以后的步骤照上面的方法继续就可以了$ V, d& \+ a7 n  D- K" \
+ `, ~9 v  ^2 Z# Y
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了5 K- a* C( k1 Q4 G6 `

0 u, d: K0 k9 G* m% {6 X因为kernel32.dll的大小不一样。
$ }' z. B. a3 O" x0 x; l! l# G2 r6 `& T2 H1 p& y7 m9 ?: B
3.修改originalfirstthunk
0 ]0 f  d) }' a/ D& `4 `4 ]
4 |1 v5 @8 V2 S8 `# A0 `' \如图所示2 ^0 m0 A+ u. Y0 f4 c

/ @+ r7 i2 B( R/ ?$ t9 f6 D, _9 Q- H5 ^+ m, [4 V3 {: U
我们打开loaderpe,依次点  目录--导入表(后面那个横线)
" `& m# p/ E+ e; D: M2 Z; \0 s4 s5 f% z
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
6 ^  X$ n) _" M8 W" @' T& }$ T4 S! y/ ?7 _0 i
我们右键--编辑--把函数后两个00修改为FF
  N, s) v; H- \- E" g
% E# o2 m( s1 w7 J$ z! Q这样可以过小红伞查杀。  虽然会出现错误提示
% D# P7 e! b- Z, @: Z$ O$ I; D$ }0 M* C1 ~+ V7 {: s
但是不影响木马的功能,不影响上线。
+ o0 ]) b2 J" C, w
) x- u0 r3 @( R3 a+ n% Z6 y- V4.dll后面加20 90法过卡巴查杀
- T% c  \% q' z) f4 h' y
% K4 E+ c! A4 ~% k需要的只是一个c32asm而已,非常简单但却非常有效
$ v; [4 m8 I5 ?, x5 t6 z# B* X( l0 u( Q; g' V& _' E
如图) r* v# K1 e! A* l
" j7 u' n( w1 l6 G

: s% D7 m' q; \: T# x8 g: k
; x9 D7 p/ P% j! V9 c我们可以看到,
7 ?0 y( q. z3 s
0 }& x$ Q5 _8 x0 ?* t在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90' k7 Q. ]. Q' V6 X/ }" y: t; [
- h# B0 [" w% |5 W9 G
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection7 F8 e9 y( ?& Q1 }# ^

9 Z' J# R5 i" @我们只需要在他的所属dll后面加个20 90就可以了
- R$ T) d' J# e; }
1 g- m. u* i. n/ ?  x卡巴目前还不查杀此免杀方法- }0 T  R5 l; y5 |8 t4 l

. u/ X- a/ [3 \: Y% l0 T4 e, y& i
唧唧歪歪这么多,打字有点累了
( r, i- W2 |0 E4 }/ O
& o5 {4 \& i: `* Y以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。  m- z( D) a' H3 _1 ]5 c4 N
( }) s2 V* h2 t- `
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表