从第一篇之后接下来就要正式开始渗透测试的部分了,首先引用《指南》中的几点忠告:
- 不要进行恶意的攻击
- 不要做傻事
- 在没有获得书面授权时,不要攻击任何目标
- 考虑你的行为将会带来的后果
- 如果你干了些非法的是事情,天网恢恢疏而不漏,你总会被抓到牢里的
谨记。
专业术语介绍
- 渗透攻击(Exploit)
渗透攻击是指由攻击者或渗透测试者利用一个系统、 应用服务中的安全漏洞, 所进行的攻击行为。 攻击者使用渗透攻击去入侵系统时,往往会造成开发者所没有预期的一种特殊结果。 流行的渗透攻击技术包括缓冲区溢出、Web应用程序漏洞攻击 (比如 SQL 注入), 以及利用配置错误等。
- 攻击载荷(Payload)
攻击载荷是我们期望日标系统在被渗透攻击之后去执行的代码。 在 Metasploit 框架中可以自由地选择、传送和植入。例如, 反弹式Shell是一种从目标主机到攻击主机创建网络连接, 并 提供命令行shell的攻击载荷。而Bind Shell攻击载荷则在目标上将命令行Shell绑定至一个打开的监听端口,攻击者可以连接这些端口来取得Shell交互。 攻击载荷也可能是简单的在目标操作系统上执行 一些命令, 如添加用户账号等。
- Shellcode
Shellcode 是在渗透攻击时作为攻击载荷运行的一组机器指令。Shellcode 通常用汇编语言编写。在大多数倩况下, 目标系统执行了 Shellcode 这一组指令之后. 才会提供一个命令行 Shell 或者 Meterpreter Shell, 这也是 Shellcode 名称的由来。
- 模块(Module)
在本书的上下文环境中, 一个模块是指 Metasploit 框架中所使用的一段软件代码组件. 在 某些时候, 你可能会使更用一个渗透攻击模块(exploit module)。也就是用于实际发起渗透攻击的软件代码组件。而在其他时候,则可能使用一个辅助模块(auxiliary module), 用来执行一些诸如扫描或系统查点的攻击动作. 这些在不断变化和发展中的模块才是使 Metasploit 框架如此强大的核心所在。
- 监昕器(Listener)
监听器是 Metasploit 中用来等待连入网络连接的组件. 举例来说,在目标主机被渗透攻击之后, 它可能会通过互联网画连至回攻击主机上, 而监听器组件在攻击主机上等待披渗透攻击的系统来连接,并负责处理这些连接。
使用MSF的几种方式
MSF 终端
使用 MSF 最常用的方式就是通过 MSF 终端。
在启动了postgresql 数据库服务和 metasploit 服务后,在终端输入msfconsole
即可打开 MSF 终端,见下图
经过一堆输出后,最终显示大概如下:
输入 help
命令可以查看简单的描述信息。
对 MSF 终端将在后文详细介绍,现在先来看看另一种使用 MSF 的方法。
在终端直接执行 MSF 命令
使用msfcli
后家命令的方式能在终端直接执行 MSF 提供的命令。
使用示例:
现在看不懂具体的输出没关系,这个示例只是让你有个初步的印象。
在这里使用了
msfcli windows/smb/ms08_067_netapi O
这行命令,其中windows/smb/ms08_067_netapi
是一个模块,末尾的O
参数表示options,意为查看模块的选项参数。
如果末尾为P
表示Payload,意为查看可以附加上的攻击载荷。
如果设置好了Options,然后末尾加上E
参数的话可以执行(Execute)模块,样例代码为
msfcli windows/smb/ms_08_067_netapi RHOST=192.168.1.3 PAYLOAD=windows/shell/bind_tcp E
没有示例截图。
PS:
现在执行
msfcli
会出现「msfcli 工具已经被弃用,请使用msfconsole -r 或 -x 来代替」
代替方法:
msfcli windows/smb/ms08_067_netapi O
基本等价于
msfconsole -x "use exploit/windows/smb/ms08_067_netapi;show options"
图形界面……
《指南》里还稍微介绍了一下图形界面,我从来不用……就算了吧。
MSF 功能程序
msfpayload 和 msfencode
《指南》里介绍的msfpayload
,msfencode
两个命令,被整合成了msfvenom
工具,就不做笔记了,详情请看这里。
Nasm Shell
将汇编命令转换为opcode的工具。
《指南》里说在/opt/framework/msf3/tools
目录中,但是 Kali Linux 里并没有这个目录,用locate nasm_shell.rb
查找之后发现在
/usr/share/metasploit-framework/tools/nasm_shell.rb
运行实例:
PS
如果出现错误提示,请按错误提示处理。
我的折腾过程:首先提示找不到gem包,要运行:
bundle install
第一次中断在pg包上,要运行:
gem install pg
然后提示缺少 libqp-dev,运行:
apt-get install libpq-dev
然后重新运行gem install pg && bundle install
,中断在:
Metasploit - InstallError: metasploit_data_models requires Ruby version >= 2.1
然后安装rvm,
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
curl -sSL https://get.rvm.io | bash
按提示初始化后运行rvm install 2.1.0
继续返回bundle install
,成功了
执行./nasm_shel.rb
正常。
MSF 基础结束,下一篇介绍情报收集的基础知识。