信息收集
当我们拿到一个客户端软件的时候,信息收集是渗透测试的第一步,也是至关重要的一步。在这个阶段,我们需要尽可能的收集与目标应用程序相关的信息。
查看程序基本信息:
工具:CFF Explorer
运行结果:
可以看到应用程序是由Visual Studio .NET构建的。
配置敏感信息泄露:
在安装目录下存在DVTA.exe.config文件:
虽然数据库密码是加密的,但是可以根据AES的**和IV来解密。
源代码中含有硬编码的FTP用户名密码:
查看是否加壳:
通过PEiD查看程序是否加壳
可以看到并未加壳。
现在我们尝试登录,在登录过程中,我们检测四个点,一是登录后用户密码有没有保存在注册表中,二是有没有残留在内存中,三是有没有将用户密码保存在本地,四是调试日志中有没有泄露敏感数据。
1、注册表内存在敏感数据
注册表内存在敏感数据是Windows桌面应用程序最常见的一个漏洞。让我注册表中可能保存了用户的登录密码、支付密码,也可能保存了手机号、身份证等敏感个人数据。我们通过检测DVTA的登录密码是否保存在注册表中来了解这一检测过程。
此时需要使用regshot这个工具,这个工具将登录前后注册表信息进行快照,然后对比发现注册表的变化从而发现敏感数据是否残留在注册表内。
现在保存第一份注册表快照:
通过zeng/zeng账号登录dvta:
登录之后保存第二份注册表快照:
现在Compare一下:
局部放大:
2、内存中存在敏感数据
现在我们要使用Process Hacker这个工具。双击选中我们要查看的程序:
选中“Memory”:
点“Strings...”:
默认就行。在新的页面中选择“Filter”->“Contains...”:
输入“password”后回车:
可以看到不仅用户名密码泄露了,就连SQL语句也泄露了,更有甚者,数据库的用户名密码也会存在内存中:
3、本地静态文件信息泄露
当用户登录成功后,登录的用户名密码会被保存:
密码经过base64解密后:
注:该案例来源于
https://blog.****.net/weixin_30685047/article/details/95916065
4、调试日志中存在敏感数据
除以上列出的三点之外,登录密码或数据库用户密码也可能在程序调试日志中泄露。
我们可以根据获得到的数据库用户名和密码,使用HeidiSQL这个数据库管理工具连接该数据库。
现在我们来分析客户端的流量。
如果是HTTP流量,我们通常会使用burpsuite这个工具。但是对于客户端来说,他不像浏览器那样可以指定代理,所以需要如下图配置:
不可见代理:
许多程序并没有像大部分浏览器那样有能让客户选择开启代理的功能,这时如果想要开启代理要使用Invisible proxy,要利用DNS欺骗,如客户端要访问www.A.com,首先要通过DNS欺骗,将burpsuite的IP地址解析为www.A.com,因此客户端会把所有的流量发送给burpsuite,再由burpsuite实现代理,由于请求包中请求的IP换成了burpsuite的IP,因此对要访问的www.A.com要设置对应的IP:
如果是TCP流量,burusuite是抓不到的。在使用admin/admin123这个账户登录DVTA时会产生FTP流量,这时候使用Echo Mirage去抓取流量,打开的窗口如图:
单击rules,我们可以看到有两条默认的规则,我们要拦截的DVTA的FTP流量,发往192.168.56.110的21端口,据此添加一条出方向的规则,并开启:
从“Process”->“Inject”选择要监听的程序DVTA.ext,登录admin账号之后,点击Backup Data to FTP Server,客户端会向服务器发送FTP请求,在这个过程中,会发送FTP用户名和口令,如下图所示 :
点击OK将会放行,抓到FTP密码:
我们也可以运行TCPView查看应用程序连接的服务器地址是多少:
之后我们就可以使用wireshark过滤目的IP地址,仔细分析客户端和服务器之间发送的数据。