rsGen是一款基于Widows BAT&JS混編實(shí)現(xiàn)的多功能反彈shell命令生成器。不僅支持生成原生反彈shell命令,還支持生成“命令中轉(zhuǎn)”形式的一句話反彈shell命令,以及包含端口監(jiān)聽(調(diào)用powercat.ps1)等功能。
“中轉(zhuǎn)命令” :類似于遠(yuǎn)控上線找IP,將命令上傳至pastebin類網(wǎng)站,然后使用curl/wget/certutil等工具遠(yuǎn)程請求執(zhí)行命令。
主要代碼流程及功能模塊注解 rsGen 90%以上功能基于Windows內(nèi)置命令實(shí)現(xiàn),代碼大約500行左右,為免篇幅過長,以下僅解釋主要流程及功能,詳請可查看源碼。
: :main 函數(shù):rs_main_start : : 基本參數(shù)判斷if ( ... call :xxx ... echo ... ) else ( ... 錯(cuò)誤處理 call :xxx ... ) :rs_main_end : : 功能模塊: :============================================================================================= =: : 檢測系統(tǒng)版本是否支持ANSI彩顯:rs_os_detect_start ... :rs_os_detect_end : : 檢查host格式:rs_check_host_start ... :rs_check_host_end : : 檢查port格式:rs_check_port_start ... :rs_check_prot_end : : 尋找未占用端口,LAN模式需要用到:rs_set_webport_start ... :rs_set_webport_end : :base64 編碼,調(diào)用內(nèi)置命令certutil實(shí)現(xiàn),用于生成命令編碼。:rs_base64_encode_start ... :rs_base64_encode_ende : : 清理臨時(shí)文件,執(zhí)行過程在Windows Temp目錄生成兩個(gè).rsg結(jié)尾的臨時(shí)文件,不清理也可以,系統(tǒng)會自動清理。:rs_clean_tempfile_start ... :rs_clean_tempfile_end : : 原生命令RAW格式輸出,提供ip和port兩個(gè)參數(shù)輸出。:rs_command_raw_start ... :rs_command_raw_end : : 核心功能:局域網(wǎng)"中轉(zhuǎn)命令" 生成,即“-lan”參數(shù)功能:rs_command_lan_start ... :rs_command_lan_end : : 核心功能:中轉(zhuǎn)命令生成,即“-pub”參數(shù)功能:rs_command_generate_pub_end ... call :rs_command_upload_start ... :rs_command_generate_pub_end : : 上傳命令至pastebin,以供遠(yuǎn)程請求執(zhí)行,內(nèi)嵌JS混編,調(diào)用cscript.exe解釋執(zhí)行:rs_command_upload_start ... :rs_command_upload_end : :banner 輸出:rs_banner_start echo ______ ________ ____ _____ echo .' ___ ^|^|_ __ ^|^|_ \^|_ _^| echo _ .--. .--. / .' \_ ^| ^| ^|_ \_^| ^| \ ^| ^| echo [ `/'`\]( (`\]^| ^| ____ ^| _ ^| _ ^| ^|\ \^| ^| echo ^| ^| `'.'.\ `.___] ^|_ ^| ^|__ / ^| _^| ^|_\ ^|_ echo [___ ] [\__ ) )`._____.'^|________^|^|_____^|\____^| v1.0 goto :eof :rs_banner_end ::幫助信息 :rs_help_start echo, echo An Universal Reserve Shell Command Genrator.(Notice: You need to provide at least host and port parameters,that is your shell ip and port.) echo, echo Usage: %~nx0 host port [options] echo Options: echo -pub Upload to pastebin to generate relay command. echo -lan Generate command for LAN only and enable a web service locally echo -listen Generate command and listen the shell port. ::echo -ngrok Use public ngrok tunnel to receive the shell echo, echo Examples: %~nx0 192.168.31.216 8888 echo %~nx0 192.168.31.216 8888 -pub echo %~nx0 192.168.31.216 8888 -lan echo %~nx0 192.168.31.216 8888 -listen echo %~nx0 192.168.31.216 8888 -lan -listen exit /b 0 :rs_help_end 開始使用 rsGen默認(rèn)至少需要提供用于反彈接收的IP和端口兩個(gè)參數(shù),如若不提供任何參數(shù),默認(rèn)輸出幫助信息。
僅生成原生格式反彈shell命令。
-pub 參數(shù),生成“中轉(zhuǎn)命令”。
PS:使用該參數(shù),將執(zhí)行命令上傳,并將編碼后的命令上傳至公共pastebin網(wǎng)站(目前提供了兩個(gè)接口:p.ip.fi和dpaste.com)。
-lan 參數(shù),用于有些情況下目標(biāo)機(jī)器無法請求外網(wǎng)。
PS:該參數(shù)會同時(shí)調(diào)用command目錄下mongoose.exe(一個(gè)迷你的web服務(wù)器,僅144kb,詳見官網(wǎng):https:///),在本地80端口啟用一個(gè)web服務(wù),用于命令請求執(zhí)行。工具使用完后,需要手動退出。
-listen 參數(shù),在本地啟用端口監(jiān)聽,用于接收反彈回來的shell。
PS:在本地啟用端口監(jiān)聽,用于接收反彈回來的shell,功能等同于netcat(調(diào)用powercat.ps1)。
環(huán)境需求 一臺Windows 7以上的操作系統(tǒng)。
Q&A Q:你這個(gè)工具包含了網(wǎng)上最全的反彈shell的XX中方法嗎? A:并沒有,本工具僅用于生成常用的反彈shell命令,以及“中轉(zhuǎn)命令”,各種lua、perl、java等少見或反彈命令較長的暫時(shí)沒有添加。
Q:“命令中轉(zhuǎn)”的意義是什么? A:縮短原生命令,同時(shí)有效避免在碰到一些代碼執(zhí)行接口/命令盲執(zhí)行等情況下,原生命令中特殊字符因URL轉(zhuǎn)碼/應(yīng)用接口轉(zhuǎn)碼報(bào)錯(cuò)等未知因素導(dǎo)致的命令執(zhí)行失敗。
Q:你這個(gè)工具測試環(huán)境是什么?支持Windows 2003和Windows XP嗎? A:(1)關(guān)于工具:測試環(huán)境我用的Windows10 和Windows 7,同時(shí)建議使用Widows10以獲得較佳體驗(yàn)(Win10支持ANSI彩顯,Win7未全部使用彩色輸出)。Windows XP及2003未做兼容,理論上也可以用,但是“中轉(zhuǎn)命令”肯定廢了,因?yàn)樵摴δ懿糠终{(diào)用powershell實(shí)現(xiàn)。
(2)關(guān)于生成的命令:目前不支持WinXP和Win2003,已在存在Thinkphp5.x代碼執(zhí)行的Windows Server 2012、存在weblogic反序列命令盲執(zhí)行的Linux服務(wù)器、Struts命令執(zhí)行等環(huán)境進(jìn)行測試,均可快速獲得shell。
TODO 添加更多的反彈命令;
代碼優(yōu)化&BUG修復(fù);
嘗試添加類似ngrok公共服務(wù)器,用于無NAT映射、無VPS亦可輕松接收shell。
下載地址 Github傳送門:https://github.com/FlyfishSec/rsGen