Micro8
  • 前言
  • Preface
  • 目录
  • 第一章:生
    • 1-10课
      • 第一课:windows提权-快速查找exp
      • 第二课:Linux提权-依赖exp篇
      • 第三课:Delphi代码审计--项目实战1
      • 第四课:Asp代码审计--项目实战2
      • 第五课:工具介绍-Sqlmap
      • 第六课:反攻的一次溯源--项目实战3
      • 第七课:sql server 常用操作远程桌面语句
      • 第八课:模拟诉求任务攻击
      • 第九课:工具介绍-the-backdoor-factory
      • 第十课:msfvenom常用生成payload命令
    • 11-20课
      • 第十一课:工具介绍Veil-Evasion
      • 第十二课:基于UDP发现内网存活主机
      • 第十三课:基于ARP发现内网存活主机
      • 第十四课:基于第十课补充payload1
      • 第十五课:基于第十课补充payload2
      • 第十六课:红蓝对抗渗透测试1
      • 第十七课:红蓝对抗渗透测试2
      • 第十八课:红蓝对抗渗透测试3
      • 第十九课:基于netbios发现内网存活主机
      • 第二十课:基于snmp发现内网存活主机
    • 21-30课
      • 第二十一课:基于ICMP发现内网存活主机
      • 第二十二课:基于SMB发现内网存活主机
      • 第二十三课:基于MSF发现内网存活主机第一季
      • 第二十四课:基于MSF发现内网存活主机第二季
      • 第二十五课:基于MSF发现内网存活主机第三季
      • 第二十六课:基于MSF发现内网存活主机第四季
      • 第二十七课:基于MSF发现内网存活主机第五季
      • 第二十八课:基于MSF发现内网存活主机第六季
      • 第二十九课:发现目标WEB程序敏感目录第一季
      • 第三十课:解决msfvenom命令自动补全
    • 31-40课
      • 第三十一课:msf的前生今世
      • 第三十二课:配置vps上的msf
      • 第三十三课:攻击Mysql服务
      • 第三十四课:攻击Sql server 服务
      • 第三十五课:与Sqlmap结合攻击
      • 第三十六课:解决vps上ssh掉线
      • 第三十七课:vbs一句话下载payload
      • 第三十八课:certutil一句话下载payload
      • 第三十九课:vbs一句话下载payload补充
      • 第四十课:ftp一句话下载payload
    • 41-50课
      • 第四十一课:bitsadmin一句话下载payload
      • 第四十二课:攻击FTP服务
      • 第四十三课:js一句话下载payload
      • 第四十四课:ertutil一句话下载payload补充
      • 第四十五课:解决bat一句话下载payload黑窗
      • 第四十六课:powershell一句话下载payload
      • 第四十七课:payload分离免杀思路
      • 第四十八课:payload分离免杀思路第二季
      • 第四十九课:关于Powershell对抗安全软件
      • 第五十课:基于SqlDataSourceEnumerator发现内网存活主机
    • 51-60课
      • 第五十一课:项目回忆:体系的本质是知识点串联
      • 第五十二课:渗透的本质是信息搜集
      • 第五十三课:内网渗透中的文件传输
      • 第五十四课:基于Powershell做Socks 4-5代理
      • 第五十五课:与Smbmap结合攻击
      • 第五十六课:离线提取目标机hash
      • 第五十七课:高级持续渗透-第一季关于后门
      • 第五十八课:高级持续渗透-第二季关于后门补充一
      • 第五十九课:高级持续渗透-第三季关于后门补充二
      • 第六十课:高级持续渗透-第四季关于后门
    • 61-70课
      • 第六十一课:高级持续渗透-第五季关于后门
      • 第六十二课:高级持续渗透-第六季关于后门
      • 第六十三课:高级持续渗透-第七季demo的成长
      • 第六十四课:高级持续渗透-第八季demo便是远控
      • 第六十五课:离线提取目标机hash补充
      • 第六十六课:借助aspx对payload进行分离免杀
      • 第六十七课:meterpreter下的irb操作第一季
      • 第六十八课:基于Ruby内存加载shellcode第一季
      • 第六十九课:渗透,持续渗透,后渗透的本质
      • 第七十课:ftp一句话下载payload补充
    • 71-80课
      • 第七十一课:基于白名单Msbuild.exe执行payload第一季
      • 第七十二课:基于白名单Installutil.exe执行payload第二季
      • 第七十三课:基于白名单Regasm.exe执行payload第三季
      • 第七十四课:基于白名单Regsvcs.exe执行payload第四季
      • 第七十五课:基于白名单Mshta.exe执行payload第五季
      • 第七十六课:基于白名单Compiler.exe执行payload第六季
      • 第七十七课:基于白名单Csc.exe执行payload第七季
      • 第七十八课:基于白名单Msiexec执行payload第八季
      • 第七十九课:基于白名单Regsvr32执行payload第九季
      • 第八十课:基于白名单Wmic执行payload第十季
    • 81-90课
      • 第八十一课:基于白名单Rundll32.exe执行payload第十一季
      • 第八十二课:基于白名单Odbcconf执行payload第十二季
      • 第八十三课:基于白名单PsExec执行payload第十三季
      • 第八十四课:基于白名单Forfiles执行payload第十四季
      • 第八十五课:基于白名单Pcalua执行payload第十五季
      • 第八十六课:基于白名单Msiexec执行payload第八季补充
      • 第八十七课:基于白名单Cmstp.exe执行payload第十六季
      • 第八十八课:基于白名单Ftp.exe执行payload第十九季
      • 第八十九课:基于白名单Url.dll执行payload第十七季
      • 第九十课:基于白名单zipfldr.dll执行payload第十八季
    • 91-100课
      • 第九十一课:从目标文件中做信息搜集第一季
      • 第九十二课:实战中的Payload应用
      • 第九十三课:与CrackMapExec结合攻击
      • 第九十四课:基于实战中的small payload
      • 第九十五课:基于Portfwd端口转发
      • 第九十六课:HTTP隧道ABPTTS第一季
      • 第九十七课:MSF配置自定义Payload控制目标主机权限
      • 第九十八课:HTTP隧道reGeorg第二季
      • 第九十九课:HTTP隧道Tunna第三季
      • 第一百课:HTTP隧道reDuh第四季
  • 第二章:老(待更新...)
    • 第一百零一课:基于SCF做目标内网信息搜集第二季
    • 第一百零二课:对抗权限长期把控-伪造无效签名第一季
    • 第一百零三课:Http加密隧道下的横向渗透尝试---klion
    • 第一百零四课:Windows Smb 欺骗重放攻击利用---klion
    • 第一百零五课:windows 单机免杀抓明文或hash [通过dump lsass进程数据]---klion
    • 第一百零六课:windows 单机免杀抓明文或hash [通过简单混淆编码绕过常规静态检测]---klion
    • 第一百零七课:跨平台横向移动 [ windows计划任务利用 ]---klion
    • 第一百零八课:跨平台横向移动 [wmi利用]---klion
    • 第一百零九课:依托 metasploit 尽可能多的发现目标内网下的各类高价值存活主机---klion
    • 第一百一十课:窃取,伪造模拟各种windows访问令牌[token利用]---klion
    • 第一百一十一课:内网mssql完整利用流程 [ 基础篇 ]---klion
    • 第一百一十二课:利用Dropbox中转C2流量---klion
    • 第一百一十三课:COM Hijacking---倾旋
    • 第一百一十四课:渗透沉思录
    • 第一百一十五课:使用CrackMapExec 进行 NTLM Hash传递攻击---倾旋
    • 第一百一十六课:Windows域渗透 - 用户密码枚举---倾旋
    • 第一百一十七课:Windows 本地特权提升技巧---倾旋
    • 第一百一十八课:CVE-2017-11882钓鱼攻击---倾旋
    • 第一百一十九课:全平台高性能加密隧道 ssf---klion
    • 第一百二十课:win自带的高级网络配置管理工具深度应用 [ netsh ]---klion
    • 第一百二十一课:http加密代理深度应用 [ abptts ]---klion
    • 第一百二十二课:利用 ssh隧道实现内网断网机meterpreter反向上线---klion
    • 第一百二十三课:利用ssh隧道将公网meterpreter弹至本地的msf中---klion
  • 第三章:病(待更新...)
Powered by GitBook
On this page
  • 需要zsh的支持:
  • 附录A:

Was this helpful?

  1. 第一章:生
  2. 21-30课

第三十课:解决msfvenom命令自动补全

Previous第二十九课:发现目标WEB程序敏感目录第一季Next31-40课

Last updated 6 years ago

Was this helpful?

本课是针对前第1-20课时的msfvenom生成payload的自动补全命令补充。虽msfvenom强大,同样有着非常繁琐的参数,参数强大,意味着会增加工作效率,但它并不像MSF有命令补全功能,故本课吸取前20课经验,自动补全msfvenom的参数。

需要zsh的支持:

root@John:~# cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/screen
/bin/zsh
/usr/bin/zsh
/usr/bin/tmux
root@John:~# echo $SHELL
/bin/bash

复制附录A到~/.oh-my-zsh/custom/plugins/msfvenom文件夹下(注:没有msfvenom目录,创建即可)

root@John:~/.oh‐my‐zsh/custom/plugins/msfvenom# pwd
/root/.oh‐my‐zsh/custom/plugins/msfvenom
root@John:~/.oh‐my‐zsh/custom/plugins/msfvenom# ls
_msfvenom

编辑~/.zshrc文件:

root@John:~# nano ~/.zshrc
root@John:~# nano ~/.zshrc
root@John:~# cat ~/.zshrc
plugins=(msfvenom)

更新:

root@John:~# source ~/.zshrc

效果如下:

附录A:

#compdef msfvenom
#autoload
#
# zsh completion for msfvenom in Metasploit Framework Project (https://www.metasploit.com)
#
# github: https://github.com/Green‐m/msfvenom‐zsh‐completion
#
# author: Green‐m (greenm.xxoo@gmail.com)
#
# license: GNU General Public License v3.0
#
# Copyright (c) 2018, Green‐m
# All rights reserved.
# 

VENOM_CACHE_FILE=~/.zsh/venom‐cache 

venom‐clear‐cache() {
rm $VENOM_CACHE_FILE
} 

venom‐cache‐payloads() { 

if [ ‐x "$(command ‐v msfvenom)" ]
then
VENOM="msfvenom"
elif [ ‐n "$_comp_command1" ]
then
VENOM=$_comp_command1
else
echo "Cound not find msfvenom path in system env, please run msfvenom with path."
fi 

if [[ ! ‐d ${VENOM_CACHE_FILE:h} ]]; then
mkdir ‐p ${VENOM_CACHE_FILE:h}
fi 

if [[ ! ‐f $VENOM_CACHE_FILE ]]; then
echo ‐n "(...caching Metasploit Payloads...)"
$VENOM ‐‐list payload|grep ‐e "^.*\/" | awk '{print $1}' >>
$VENOM_CA CHE_FILE
fi
} 

_msfvenom() { 

local curcontext="$curcontext" state line
typeset ‐A opt_args 

_arguments ‐C \
'(‐h ‐‐help)'{‐h,‐‐help}'[show help]' \
'(‐l ‐‐list)'{‐l,‐‐list}'[List all modules for type. Types are: paylo
ads, encoders, nops, platforms, archs, encrypt, formats, all]' \
'(‐p ‐‐payload)'{‐p,‐‐payload}'[Payload to use (‐‐list payloads to list,
‐‐list‐options for arguments). Specify ‐ or STDIN for custom]' \
'(‐‐list‐options)‐‐list‐options[List ‐‐payload <value> standard, adva
nced and evasion options]' \
'(‐f ‐‐format)'{‐f,‐‐format}'[Output format (use ‐‐list formats to li
st)]' \
'(‐e ‐‐encoder)'{‐e,‐‐encoder}'[The encoder to use (use ‐‐list encoders
to list)]' \
'(‐‐smallest)‐‐smallest[Generate the smallest possible payload using all
available encoders]' \
'(‐‐encrypt)‐‐encrypt[The type of encryption or encoding to apply to the
shellcode (use ‐‐list encrypt to list)]' \
'(‐‐encrypt‐key)‐‐encrypt‐key[A key to be used for ‐‐encrypt]' \
'(‐‐encrypt‐iv)‐‐encrypt‐iv[An initialization vector for ‐‐encrypt]' \
'(‐a ‐‐arch)'{‐a,‐‐arch}'[the architecture to use for ‐‐payload and ‐
‐encoders (use ‐‐list archs to list)]' \
'(‐‐platform)‐‐platform[The platform for ‐‐payload (use ‐‐list platfo rms
to list)]' \
'(‐o ‐‐out)'{‐o,‐‐out}'[Save the payload to a file]' \
'(‐b ‐‐bad‐chars)'{‐b,‐‐bad‐chars}'[Characters to avoid example: "\x0
0\xff"]' \
'(‐n ‐‐nopsled)'{‐n,‐‐nopsled}'[Prepend a nopsled of \[length\] size on
to the payload]' \
'(‐‐encoder‐space)‐‐encoder‐space[The maximum size of the encoded pay
load (defaults to the ‐s value)]' \
'(‐i ‐‐iterations)'{‐i,‐‐iterations}'[The number of times to encode t he
payload]' \
'(‐c ‐‐add‐code)'{‐c,‐‐add‐code}'[Specify an additional win32 shellcode
file to include]' \
'(‐x ‐‐template)'{‐x,‐‐template}'[Specify a custom executable file to use
as a template]' \
'(‐k ‐‐keep)'{‐k,‐‐keep}'[Preserve the ‐‐template behaviour and inject
the payload as a new thread]' \
'(‐v ‐‐var‐name)'{‐v,‐‐var‐name}'[Specify a custom variable name to use
for certain output formats]' \
'(‐t ‐‐timeout)'{‐t,‐‐timeout}'[The number of seconds to wait when re
ading the payload from STDIN (default 30, 0 to disable)]' \
'*: :($(__msfvenom_options))' && ret=0 

lastword=${words[${#words[@]}‐1]} 

case "$lastword" in
(‐p|‐‐payload)
_values 'payload' $(__msfvenom_payloads)
;; 

(‐l|‐‐list)
local lists=('payloads' 'encoders' 'nops' 'platforms' 'archs' 'encrypt'
'formats' 'all')

_values 'list' $lists
;; 

(‐encrypt)
local encrypts=('aes256' 'base64' 'rc4' 'xor')
_values 'encrypt' $encrypts
;; 

(‐a|‐‐arch)
_values 'arch' $(__msfvenom_archs)
;; 

(‐platform)
_values 'platform' $(__msfvenom_platforms)
;;

(‐f|‐‐format)
_values 'format' $(__msfvenom_formats)
;;

(‐e|‐‐encoder)
_values 'encoder' $(__msfvenom_encoders)
;; 

(‐o|‐‐out|‐x|‐‐template|‐c|‐‐add‐code)
_files
;;

(*)

;; 

esac
} 

__msfvenom_payloads(){
local msf_payloads 

# we cache the list of packages (originally from the macports plugin)
venom‐cache‐payloads
msf_payloads=`cat $VENOM_CACHE_FILE` 

for line in $msf_payloads; do
echo "$line"
done
} 

__msfvenom_archs(){
local archs
archs=(
'aarch64'
'armbe'
'armle'
'cbea'
'cbea64'
'cmd'
'dalvik'
'firefox'
'java'
'mips'
'mips64'
'mips64le'
'mipsbe'
'mipsle'
'nodejs'
'php'
'ppc'
'ppc64'
'ppc64le'
'ppce500v2'
'python'
'r'
'ruby'
'sparc'
'sparc64'
'tty'
'x64'
'x86'
'x86_64'
'zarch'
) 

for line in $archs; do
echo "$line"
done 

} 

__msfvenom_encoders(){
local encoders
encoders=(
'cmd/brace'
'cmd/echo'
'cmd/generic_sh'
'cmd/ifs'
'cmd/perl'
'cmd/powershell_base64'
'cmd/printf_php_mq'
'generic/eicar'
'generic/none'
'mipsbe/byte_xori'
'mipsbe/longxor'
'mipsle/byte_xori'
'mipsle/longxor'
'php/base64'
'ppc/longxor'
'ppc/longxor_tag'
'ruby/base64'
'sparc/longxor_tag'
'x64/xor'
'x64/xor_dynamic'
'x64/zutto_dekiru'
'x86/add_sub'
'x86/alpha_mixed'
'x86/alpha_upper'
'x86/avoid_underscore_tolower'
'x86/avoid_utf8_tolower'
'x86/bloxor'
'x86/bmp_polyglot'
'x86/call4_dword_xor'
'x86/context_cpuid'
'x86/context_stat'
'x86/context_time'
'x86/countdown'
'x86/fnstenv_mov'
'x86/jmp_call_additive'
'x86/nonalpha'
'x86/nonupper'
'x86/opt_sub'
'x86/service'
'x86/shikata_ga_nai'
'x86/single_static_bit'
'x86/unicode_mixed'
'x86/unicode_upper'
'x86/xor_dynamic'
)

for line in $encoders; do
echo "$line"
done
} 

__msfvenom_platforms(){
local platforms
platforms=(
'aix'
'android'
'apple_ios'
'bsd'
'bsdi'
'cisco'
'firefox'
'freebsd'
'hardware'
'hpux'
'irix'
'java'
'javascript'
'juniper'
'linux'
'mainframe'
'multi'
'netbsd'
'netware'
'nodejs'
'openbsd'
'osx'
'php'
'python'
'r'
'ruby'
'solaris'
'unix'
'unknown'
'windows'
)

for line in $platforms; do
echo "$line"
done
} 

__msfvenom_formats(){
local formats
formats=(
'asp'
'aspx'
'aspx‐exe'
'axis2'
'dll'
'elf'
'elf‐so'
'exe'
'exe‐only'
'exe‐service'
'exe‐small'
'hta‐psh'
'jar'
'jsp'
'loop‐vbs'
'macho'
'msi'
'msi‐nouac'
'osx‐app'
'psh'
'psh‐cmd'
'psh‐net'
'psh‐reflection'
'vba'
'vba‐exe'
'vba‐psh'
'vbs'
'war'
'bash'
'c'
'csharp'
'dw'
'dword'
'hex'
'java'
'js_be'
'js_le'
'num'
'perl'
'pl'
'powershell'
'ps1'
'py'
'python'
'raw'
'rb'
'ruby'
'sh'
'vbapplication'
'vbscript'
)

for line in $formats; do
echo "$line"
done
} 

# For most common options, not accurately
__msfvenom_options(){
local options
options=(
LHOST= \
LPORT= \
EXITFUNC= \
RHOST= \
StageEncoder= \
AutoLoadStdapi= \
AutoRunScript= \
AutoSystemInfo= \
AutoVerifySession= \
AutoVerifySessionTimeout= \
EnableStageEncoding= \
EnableUnicodeEncoding= \
HandlerSSLCert= \
InitialAutoRunScript= \
PayloadBindPort= \
PayloadProcessCommandLine= \
PayloadUUIDName= \
PayloadUUIDRaw= \
PayloadUUIDSeed= \
PayloadUUIDTracking= \
PrependMigrate= \
PrependMigrateProc= \
ReverseAllowProxy= \
ReverseListenerBindAddress= \
ReverseListenerBindPort= \
ReverseListenerComm= \
ReverseListenerThreaded= \
SessionCommunicationTimeout= \
SessionExpirationTimeout= \
SessionRetryTotal= \
SessionRetryWait= \
StageEncoder= \
StageEncoderSaveRegisters= \
StageEncodingFallback= \
StagerRetryCount= \
StagerRetryWait= \
VERBOSE= \
WORKSPACE=
) 

echo $options
}

#_msfvenom "$@"

Micropoor