返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
  Y! o  U4 N5 U  x' W  M+ h9 q  {$ B' o6 u5 c  \
特拿来分享给大家。9 [  o! ]5 B  Q1 h- z0 L9 x/ S: I

+ K' @  W3 [& [* m& s今天我们不提我们国产的那些杀软,真的垃圾的要死,- B" d' `7 \2 C8 L

( m. a$ b6 I/ b1 s4 m3 z, U/ V8 O" }+ A上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表! @4 W2 K* u2 B/ A* s

* ~: S; E$ Z4 v2 k, \我简单的重建了输入表就把瑞星搞定了,
# C6 q$ U6 y' E8 A5 ^! _1 X3 L& M% w# I9 C
失去信心了。我曰& G# {; @5 ]& Y) A: D3 M
2 E8 x& _$ t% U$ {  E
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
# Q5 K1 Q7 b4 Q
' c+ E3 H0 t3 O. t首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
! ?. l) d: c) T  ?7 P% ?& F5 q, R+ E1 P) `4 N/ c' }4 |
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。7 D# G  {9 N" b' ^: E
+ a1 ?& P, I8 d! o9 O; V3 R6 m
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低3 y- r( O- {- f  _* c: a) ?

# p4 L$ P" \5 z7 k6 N) g过了以后再调到最高,再做免杀。" {$ @+ y+ B* N' M

& W% x$ e: M6 K) C" _/ l0 z% o以上是废话,5 F! I! e4 k8 ]7 t9 B5 b" q1 l

+ F% M6 Q4 z  q. N1 y好了,下面我们来说下常见的免杀输入表方法。9 e1 l' W7 y5 c2 L0 w
# d+ D" s7 _) Q- w. l
一。移位法& B# H) s, Z; r( n: X: l! ]0 S' J

( H& ]# N9 F: J+ _$ ]2 a' M% y: p这个已经过时了,我们的国产杀软及时的跟上了时代,
* z* C! L- s1 Z7 c% C, b/ {, P6 f! d
移位法在去年过金山和瑞星,还有江民都是可以过的,
7 Z& B  B3 a7 P: J* _- S
  L4 A. c+ H, w" S9 s7 I$ H现在的杀软智能化了,移位么?呵呵 ,追杀你。
6 q3 a# m. s. k+ h' n$ C0 E
6 _- D2 Q' @' F. I; ]7 t, [如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
0 a0 {# Z' d, I7 j2 f) ^  I, B4 R  t8 W% J& i1 u8 H5 B0 {
二,重建输入表( ~5 ]8 K/ B# e4 _
' W" ~- f1 F; ^) l3 \
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈. ?! e- ?! K& d# |' u3 Y) l; E

2 `, U& Y& ~, I8 t6 ?3 S这里我介绍下,
( J* m8 u( c1 @* o6 o5 M% P6 b" x* V7 w- \0 u$ J! b3 L
用到工具:
) ~3 X1 G' |' @importrec1.6- i& }+ c0 n9 G8 A
od
$ t6 k$ @; L0 L& fc32asm+ S8 Y0 t% @# `
loaderpe
# f4 g: y. n' S) w这里我们简单的介绍下,如何重建输入表
' x" c  d1 O+ D3 l1 b2 b" y, ?( t1 `4 L5 {- q- J) S
首先吧文件拖入od,打开inportrec1.6
; g. @% i  D+ u$ g& y# z; E- @/ r. a- b; w2 V. d: Z4 e1 m3 S) I
如图 选择拖入od的程序,
6 s( K" ]* g' b$ b5 j  \! B4 a8 N3 p' w

) ?! M# b6 L5 ~1 Y这个时候,我们打开loaderpe,+ i4 n0 |0 e0 e5 ]
* E! f4 h6 `5 {; _$ g
拖入我们的木马3 S1 m9 x4 G7 J8 Y5 g0 D9 G; j2 K
  V8 V( r4 j  h3 D  I- Z
选择目录,
3 |6 ?  f- m. g3 i+ k. s8 A
8 m. U, P; a$ _. ?, p* j我们看到导入表这里。。。
( }1 w  G% @3 X' o1 F
; \0 {9 S9 O( U. b1 p如图:
! x- J7 _. T+ L0 X0 n7 l/ O4 F, W+ }2 H4 b9 F
: L4 Z5 }0 M) F
RVA地址是0001D000  大小是0000154C
9 F3 c; d# b% ^9 r9 w/ p0 Y5 ~
9 T$ F/ W$ V) e- e- ^$ |& ]好的,我们把这两个输入到import1.6里去8 p3 O+ c6 G# ?, `  f1 V: E  M
7 ~8 N% J" {: B' `; h: c
就是在“加载树文件”那上面一点 8 K& k! `* O/ k8 B' ^* X  g& `

. f/ O' n) i; `$ e! e! |( J输入RVA的地址和大小。
. @9 T7 c* n1 ?$ n3 {7 x, K4 V* v" N3 @1 k
点击“获得输入表”
- n; u1 I7 f  Y# k/ c
" q% B! y0 B( N  S然后点击“显示无效的”
0 U9 h! q0 Q8 `. E2 `! t+ w1 K3 T% m0 n; S6 O
接着importrec会自动列出$ \7 Z* d1 v& o, t  o6 u

8 t; v# z7 }5 Q$ o9 c, Q我们把深蓝色的字体  右键   剪切无效的指针
- P  \7 l+ U0 d; r+ L  g
/ ?' D& A+ i7 a3 q. U
% o9 w4 h6 U6 @# i6 S) P5 W/ V最后,我们点“修理dump”, s& i: \, T% M

; o( T4 }, U+ x5 N( s# E3 s4 h选中我们的木马就可以了
. z5 ]( V# k1 I, m  J7 Z5 J) |9 u) T; A* P' y- ^( i
最后我们要用到c32asm# e/ a# s. u8 S5 `

/ d; W) x* W- B我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
$ m  w. a) K" ]0 A  a+ u0 M
! O6 c! j) Z# h( G( E! n这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)* w. p: F# p' d/ b" i' G( y

* C8 k8 ~$ ?: }( O% D1 z5 s6 }' x这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
3 w- p7 E/ t6 L6 s# y7 z! I& v) n9 z+ s6 h/ R
我们把马子拖入od的以后,打开了importrec1.6
. N" d8 z  G/ q+ M' [8 J2 V7 S  \2 ^. `# n( ^8 \
在选项那里,选择根据序数建造输入表和创建新的IAT
6 G3 \. }& v0 L% u7 G% d& r5 D: D5 {& L3 j  Q
如图- }9 G8 R4 c3 `1 L) P' D: r) t

( f) {9 z5 K/ |, G3 x" |; {/ m. {8 V" U9 `& G2 y
以后的步骤照上面的方法继续就可以了  v9 b7 o2 U0 i8 |; c7 o) Z
0 l' c5 E5 ~3 ]" z
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了. k7 K: }8 q6 q/ A- i
& z9 |1 o! E; [# s  T. M+ o
因为kernel32.dll的大小不一样。
4 c) `2 [9 a: Z2 S: v1 X' Q' Z2 a- ?! y5 ?* l& O; j) U. L( R
3.修改originalfirstthunk
/ G1 `, Q3 f- P! E/ _& v
: H+ {2 Z* k" A" W; t; u如图所示
0 o8 l/ d! c5 l- }$ M! p! Q, V$ \  c8 y6 z" g4 _8 W
6 C" g- h% M) F: p3 c7 i6 y2 U
我们打开loaderpe,依次点  目录--导入表(后面那个横线)4 a3 g9 u6 Z2 [7 ]* Z
2 O- T5 b. x  l6 {) K
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
- ]$ U0 G9 `. k, K: G* f* v" R) g; g5 V+ t0 X) y# F1 J
我们右键--编辑--把函数后两个00修改为FF) N2 b7 ?" g* J- n

1 K+ B4 D& E, ?1 |) [. ^+ Y, U这样可以过小红伞查杀。  虽然会出现错误提示. l5 D& x; y5 W5 c+ N

! P) t" ~9 Q: I6 T9 w; W但是不影响木马的功能,不影响上线。! i% G) H  I  [) `4 m1 r; K- j

, {( ]4 h8 ?0 H* B4.dll后面加20 90法过卡巴查杀
% r; c# J9 P" x8 r9 K
% W$ T2 ]/ b# |# v' D  V需要的只是一个c32asm而已,非常简单但却非常有效% N2 T( q- H6 C7 c$ z

# [4 r5 w8 A6 _如图% h1 `; ]8 o' U  L
6 ^8 |( Q7 y/ v5 S- x

4 G: Q0 X0 P- R! z: w, P9 C& ]  Y
8 P$ Z' n8 S# ^( @我们可以看到,
. `, L2 ^3 x2 x; Q8 v. k4 e
9 O6 `4 u0 b5 ]. n& X' u在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
1 f- @# X1 l0 v$ g1 p+ V
$ \/ ?" r. Q' z' ^. l这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
. J, L! e1 i. \4 `  G; Y" H. c% e
. Y' l; b- ]# d5 ]  T- s. _我们只需要在他的所属dll后面加个20 90就可以了
7 s, ]' ~. n: ~
4 r- p8 S  t& s4 c; k卡巴目前还不查杀此免杀方法
6 `# E9 ]6 ~. Y! @
" A& B% x5 K. h" ~$ H8 u/ o8 m! n" X, w
唧唧歪歪这么多,打字有点累了5 x, u. U! T. i2 h

# M/ f& T/ X* ?9 C( a3 M以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。9 X( p% r) L1 r8 T
" V9 T$ ~/ C0 h% d6 @, N8 r
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表