- ·上一篇文章:黑客工具介绍之DDoS攻击工具TFN2K分析
- ·下一篇文章:Telnet高级入侵攻略及原理
黑客工具介绍之DDoS攻击工具Trinoo分析
. . .
缺陷及弱点
第一个缺陷就是使用crypt()函数加密的口令,和能够截获主服务器与守护程序之间通讯时的提示信息与返回字符串。
这能够使你识别出是否存在主服务器或守护程序,确定是否存在本文所提到的缺省口令,也有可能让你通过解密该口令来获取某些(甚至全部)trinoo网络的控制权。
但如果源代码被那些聪明的攻击者修改了,你也许就要破解口令,或使用十六进制/ASCII编辑器修改二进制代码文件中的ming令序列来获得主程序/守护程序主机清单。
如果源代码非常幸运地没有被修改,可以通过搜索文件中的字符串找到缺省安装口令:
# strings - ns
. . .
socket
bind
recvfrom
%s %s %s
aIf3YWfOhw.V.<=== crypt() encrypted password "l44adsl"
PONG
*HELLO*
. . .
# strings - master
. . .
---v
v1.07d2+f3+c
trinoo %s
l44adsl<=== clear text version of daemon password
sock
0nm1VNMXqRMyM<=== crypt() encrypted password "gOrave"
10:09:24
Sep 26 1999
trinoo %s [%s:%s]
bind
read
*HELLO*
ZsoTN.cq4X31<=== CRYPTKEY
bored
NEW Bcast - %s
PONG
PONG %d Received from %s
Warning: Connection from %s
beUBZbLtK7kkY<=== crypt() encrypted password "betaalmostdone"
trinoo %s..[rpm8d/cb4Sx/]
. . .
DoS: usage: dos
DoS: Packeting %s.
aaa %s %s
mdie
ErDVt6azHrePE<=== crypt() encrypted password for "mdie" command
mdie: Disabling Bcasts.
d1e %s
mdie: password?
. . .
第二个更大的缺陷是在网络中以明文方式传送的守护程序口令。假设你已知道主服务器与客户端(守护程序)的UDP连接端口号,就可以用"sniffit"、"ngrep"、"tcpdump"或其它网络监听程序截
获UDP数据包中的口令(附录A是一个使用"ngrep"的例子)。
例如:以下是通过"sniffit"截获的包含"png"ming令的数据包内容:
UDP Packet ID (from_IP.port-to_IP.port): 10.0.0.1.1024-192.168.0.1.27444
45 E 00 . 00 . 27 ' 1A . AE . 00 . 00 . 40 @ 11 . 47 G D4 . 0A . 00 . 00 . 01 .
C0 . A8 . 00 . 01 . 04 . 00 . 6B k 34 4 00 . 13 . 2F / B7 . 70 p 6E n 67 g 20
6C l 34 4 34 4 61 a 64 d 73 s 6C l
正如前文提到的,trinoo主服务器的"mdie"ming令是有口令保护的。有几种方法可以破解它。
如果你能够使用UNIXming令"strings"找到了加密口令,也许可以使用口令破解工具进行解密(请参阅附录C)。虽然这种破解方法可能耗时很长(如果口令强度大的话),但确实是可行的。(我们在一台Pentium II机器上花了不到30秒就破解出"mdie"ming令的口令是"kellme"。)
你也可能试图在攻击者与主服务器之间的网络上窃听口令,但如果需要这个口令的ming令并不经常(甚至根本从未)被执行,则难度将会很大。
你也许很幸运地截取到守护程序口令,因为大多数ming令都需要它。这种情况可能出现在守护程序端或主服务器端的网络(这两个服务器可能属于两种完全不同类型的网络)中。在守护程序端网络进行截取更为可取,因为守护程序的数量远比主服务器数据多。另一个原因是许多主服务器被发现在主域名服务器中运行,此主机上的高级UDP端口的数据流量将比守护程序所在主机的数据流量大得多,窃听难度也就加大了许多。此外,当你发现在某个站点上运行了数个守护程序,这往往意味着你可以完全确定该系统被入侵了。:)
一旦找到了守护程序,你就能够获得主服务器所在的IP地址清单(可通过"strings"ming令)。你应该立刻通过这些站点管理员对其主机进行详细的系统入侵检测。(如果攻击者使用了rootkit,则可能需要咨询专业的安全公司和专家。)
如果发现的是主服务器,则可在其守护程序清单文件中获得所有的守护程序IP地址(如果未被加密的话)。但如果该文件被加密了,你或者使用编译到文件中的口令关键字进行解密(其加密算法为Blowfish算法),或者控制该主服务器并使用"bcast"ming令取得激活的守护程序列表。
如果你发现了一个与主服务器的活动会话(该会话是一个"telnet"的TCP会话),你可以使用"hunt"程序截获该会话,并运行ming令。虽然不知道"mdie"ming令的口令,无法直接停止所有的守护程序,但你可以使用"bcast"ming令获取所有的守护程序清单。(由于该清单可能包含一个很大的列表,建议编写ming令脚本来实现。)
一旦你知道了所有守护程序的IP地址,和守护程序口令,就可以发送包含了正确ming令串的UDP数据包给任何可疑的trinoo守护程序。LibNet、Spak和Perl Net::RawIP库等工具可用于构造和发送UDP数据包。(一个使用了Net::RawIP的Perl脚本"trinot"专用于完成此项工作。请参阅附录B。)
因为守护程序的典型安装过程向系统添加了一个使其每分钟自动运行的crontab入口项,你应该彻底清除它们,以阻止其重新运行。
在你的网络中窃听到包含字符串"*HELLO*"、"PONG"或其它特征字符串的UDP包也能证明守护程序已被安装到网络中。注意,这只适用于源代码未经修改的版本。以下是"ngrep"程序成功捕获的例子:
# ngrep -i -x "*hello*|pong" udp
interface: eth0 (192.168.0.200/255.255.255.0)
filter: ip and ( udp )
match: *hello*|pong
. . .
# 10.0.0.1:31335
2a 48 45 4c 4c 4f 2a *HELLO*
### 10.0.0.1:31335
50 4f 4e 47 PONG 10.0.0.1:31335
50 4f 4e 47 PONG 10.0.0.1:31335
50 4f 4e 47 PONG
. . .
即使trinoo本身没有弱点,但在trinoo网络却仍然可以找到其弱点。
正如前文提到的,一些系统使用了crontab来运行守护程序,这是一个非常明显的标记。
自动安装trinoo网络的脚
黑客工具介绍之DDoS攻击工具Trinoo分析