上一部分我们完成了加解密方面的任务(securityoverridehackingchallenge 解题思路汇总——Decryption)。下一个部分应当是权限提升的,不过在这个过程中遇到了一些问题。发帖问了之后也说这部分有bug,因此一直没能成功,所以就暂时跳过了。那么今天的主题就是取证(Forensics)了。所谓取证,就是通过监听、中间人、第三方信息(whois)甚至是网页等本身,来收集并获取有利的信息。取证可谓是任何攻击渗透的第一步,例如,在权限提升第一个问题中,就需要首先获取到服务器的系统版本,然后才能再去查询对应的漏洞。正所谓“知己知彼,百战不殆”。
这个系列的问题中,主要是使用wireshark分析捕获到的数据包,从中寻找关键信息。这个情景在局域网端的分析中十分实用,因此还是非常有帮助的。
5 Forensics
5.1 FTP Authentication
这题提供了一个wireshark的抓包文件,要求从中获取ftp的用户名和密码。用wireshark打开文件,设置过滤器为ftp,然后逐条查看就是了。因为ftp在传输过程中使用的是明文,所以请求和返回值都可以直接获取。可以发现,用户Sandy尝试了3次登录,只有最后一次才通过了ftp验证,密码为!F376@Rz。
5.2 SMTP Authentication
这次的抓包文件中主要包括的是一个使用SMTP发送邮件的过程,因为没有使用SSL进行加密,所以整个过程都是明文可见的,可以轻松找到发送者Audi@securityoverride.com和接受者Gotya@i.suck。
5.3 SMTP Authentication
应该是一样的包,这次要求获取用户名和密码。找到SMTP中带USER和PASS关键字的两条,可以得到用户名和密码的BASE64编码值。找个解码器解码一下就可以获取到明文信息了。
5.4 HTTP Basic Authentication
所谓HTTP Basic Authentication就是当HTTP请求返回401的时候,浏览器会弹出一个对话框来,让你输入用户名和密码。当用户名和密码被输入之后,浏览器会构造一个带有认证信息的请求头,格式为Authorization:Basic Base64(username:password)。而服务器则会获取并解码该信息,从而验证用户名密码的正确性。但是,HTTP是明文传播的,HTTP头也是可以直接查看的,因此,这些用户名和密码并不具备保密的作用。Wireshark抓包即可看到以下内容(wireshark还很智能的直接帮你解码出来了):
5.5 Telnet Authentication
一个包含telnet登录过程的cap文件。telnet并不具备任何加密功能,因此已经基本被抛弃了,取而代之的是SSH。在telnet登录的过程中,输入是实时的,即你输入任意一个字符,都会立即传给服务器。而服务器则会根据输入的字符返回需要显示的字符。如,在输入用户名的时候输入‘a’,那么服务器就会返回‘a’,接着客户端就会显示‘a’;而在输入密码的时候,输入‘a’。服务器则是返回‘*’以使得密码不可见。想要获取完整的用户名和密码,按照顺序依次获得telnet包中相应的字符即可。
5.6 FTP Data
还是之前那个FTP包,登录成功了之后,可以发现用户请求了几次文件列表,最后请求了一个secret.txt文件。取消过滤,找到这个请求之后的一个协议为FTP-DA1的数据,内容就是这个文本文件的内容。FTP本身是不安全的,因此通常在可信的局域网下使用。如果想要更安全的方法,可以使用SFTP。但是SFTP实际上是基于SSH实现的,只是功能上和FTP相似。因此,常规的FTP客户端是无法和SFTP服务器实现交互的。
5.7 IRC Communication
模拟了一个IRC平台的聊天过程。IRC是使用TCP进行的纯文本协议,而且并不具备统一标准,因此,想要发现其中的关键信息,只能观察TCP数据包中的内容。要求输入Fullname,Nick name和目标IP。于是尝试ctrl-f搜索nick关键字,可以发现有两个包匹配,且其中一个明显为目标信息:
NICKH_a_C_k_u
USERh_A_c_K_e_R h_A_c_K_e_R irc.securityoverride.com :D_u_M_b H_a_C_k_E_r
因此,可以知道Nick name为H_a_C_k_u,Fullname为h_A_c_K_e_R h_A_c_K_e_R。目标IP则很简单,就是92.50.163.114。
5.8 ARP Poisoning
数据包演示的是局域网下的arp攻击过程。可以发现,首先多个IP都向192.168.0.1进行了ping测试。此时ip和MAC地址都是合法的对应关系。接着,192.168.0.2突然发送了大量的arp广播包。这个虽然会对网络带宽造成影响,但还构不成致命的打击。接着192.168.0.2再次询问192.168.0.1的MAC,不同的是,它把询问人伪造成了192.168.0.3。此时,网段中已经出现了两个192.168.0.3的地址,分别对应的是192.168.0.2和192.168.0.3的MAC地址。接着192.168.0.2立即向192.168.0.1发送一个伪造的arp返回包,将192.168.0.3的MAC地址声明为自己的MAC,覆盖掉正确MAC,从而把自己伪装成了192.168.0.3。之后192.168.0.1再次ping向192.168.0.3的时候,实际上则是192.168.0.2收到了ping消息。
5.9 SMTP Analysis
给了一段SMTP的数据包,要求获得其中的附件。首先使用Wireshark打开,然后选择一条SMTP数据段,右键选择Follow TCPStream,Wireshark就会把这一段连续的TCP数据拼在一起显示出来。关于邮件本身的基本信息很容易就找到了。可以看到包含了三个附件(NextPart标识),每个附件的上传方式都是标准的文件头。其中秘密信息的文件头如下所示:
我首先尝试了将后续的全部数据直接保存卫secret.rtf,不过用word打开的时候,会显示内存不足的问题。尽管字体显示出来了,但是图片却消失了。后来改用NetworkMiner打开,成功得到rtf文档。对比这两个rtf,发现直接复制出来的数据中包含了许多等号以及换行,需要使用脚本进行删除才能正常显示。推测可能是对这个文件头(Content-Type)上传的一种标准格式处理。
5.10 Advanced Encryption Forensics
打开cap文件,发现满满的都是802.11下的数据包。所谓802.11也就是wifi下的加密协议。想要获得数据内容,则必须先破解wifi密码才行。不过由于WEP的设计漏洞,WEP下的wifi加密存在秘钥重用的情况,因此在拥有大量数据包的情况下,可以根据频率分析直接破解出来。使用aircrack-ng工具,指定cap文件,可以很快获得秘钥为kings。
在wireshark中,点击菜单栏的Edit->preference->ieee802.11,打开解密选项,并添加秘钥,就可以获得解密后的数据内容。观察后可以发现,主要是HTTP数据。题目要求获取用户名和密码,有两种可能情况,一是HTTPBasic Authentication,二是网页本身的登录系统。尝试搜索401返回码,可以找到对应数据包。然后当网页再次发起请求的时候,发现已经有了Authentication字段,直接Base64解密即可获得用户名和密码。