Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
imipenguin 是一個(gè)免費(fèi)、開源、簡(jiǎn)單但是強(qiáng)大的 shell/python 腳本,用來從當(dāng)前 Linux 桌面用戶轉(zhuǎn)儲(chǔ)登錄憑證(用戶名和密碼),并且已在不同的 Linux 發(fā)行版中測(cè)試過。 -- Aaron Kili
本文導(dǎo)航
-mimipenguin 是如何工作的? …… 15%
-在 Linux 中安裝 mimipenguin …… 30%
-未來更新 …… 61%
編譯自: https://www.tecmint.com/mimipenguin-hack-login-passwords-of-linux-users/作者: Aaron Kili
譯者: geekpi
mimipenguin 是一個(gè)免費(fèi)、開源、簡(jiǎn)單但是強(qiáng)大的 shell/python 腳本,用來從當(dāng)前 Linux 桌面用戶轉(zhuǎn)儲(chǔ)登錄憑證(用戶名和密碼),并且已在不同的 Linux 發(fā)行版中測(cè)試過。
另外,它還支持如:VSFTPd(活躍的 FTP 客戶端連接)、Apache2(活躍的/舊的 HTTP 基礎(chǔ)認(rèn)證會(huì)話,但是這需要 Gcore),還有 openssh-server(活躍的 SSH 鏈接,需用 sudo 命令[1])。重要的是,它逐漸被移植到其他語言中,以支持所有可想到的以后可以利用的情況。
要理解 mimipenguin 是如何工作的,你需要知道所有或者大多數(shù)的 Linux 發(fā)行版會(huì)在內(nèi)存中存儲(chǔ)大量的重要信息, 如:憑據(jù)、加密密鑰以及個(gè)人數(shù)據(jù)。
尤其是用戶名和密碼是由進(jìn)程(運(yùn)行中的程序)保存在內(nèi)存中,并以明文形式存儲(chǔ)較長(zhǎng)時(shí)間。mimipenguin 在技術(shù)上利用這些在內(nèi)存中的明文憑證 - 它會(huì)轉(zhuǎn)儲(chǔ)一個(gè)進(jìn)程,并提取可能包含明文憑據(jù)的行。
然后,通過以下內(nèi)容的哈希值來嘗試計(jì)算每個(gè)單詞的出現(xiàn)幾率:/etc/shadow、內(nèi)存和 regex 搜索。一旦找到任何內(nèi)容,它就會(huì)在標(biāo)準(zhǔn)輸出上打印出來。
我們將使用 git 來克隆 mimipenguin 倉(cāng)庫(kù),因此如果你還沒安裝,那么首先在系統(tǒng)上安裝 git。
$ sudo apt install git #Debian/Ubuntu systems$ sudo yum install git #RHEL/CentOS systems
$ sudo dnf install git #Fedora 22+
接著像這樣在你的家目錄(或者其他任何地方)克隆 mimipenguin 目錄:
$ git clone https://github.com/huntergregal/mimipenguin.git
下載完成后,進(jìn)入并如下運(yùn)行 mimipenguin:
$ cd mimipenguin/$ ./mimipenguin.sh
注意:如果你遇到下面的錯(cuò)誤,那就使用 sudo 命令:
Root required - You are dumping memory...Even mimikatz requires administrator
在 Linux 中轉(zhuǎn)儲(chǔ)登錄密碼
從上面的輸出中,mimipenguin 向你提供了桌面環(huán)境的用戶名和密碼。
另外,還可以如下運(yùn)行 python 版腳本:
$ sudo ./mimipenguin.py
注意有時(shí) gcore 可能會(huì)阻塞腳本(這是 gcore 中一個(gè)已知問題)。
下面是將會(huì)被添加到 mimipenguin 的功能:
提升總體效率
添加更多支持以及其他的憑據(jù)位置
包括支持非桌面環(huán)境
添加 LDAP 的支持
mimipenguin 的 Github 倉(cāng)庫(kù):https://github.com/huntergregal/mimipenguin
同樣,請(qǐng)查閱:
如何在 Linux 中用密碼保護(hù)一個(gè) vim 文件[2]
如何在 Linux 中生成/加密/解密隨機(jī)密碼[3]
如何在 RHEL/CentOS/Fedora 中用密碼保護(hù) GRUB[4]
在 CentOS 7 中重置/恢復(fù)忘記的 root 用戶賬號(hào)密碼[5]
在下面的評(píng)論欄中分享你關(guān)于這個(gè)工具的額外想法或者對(duì) Linux 中內(nèi)存中明文憑據(jù)的問題。
(題圖:Pixabay,CC0)
作者簡(jiǎn)介:
Aaron Kili 是 Linux 和 F.O.S.S 愛好者,即將成為 Linux SysAdmin 和網(wǎng)絡(luò)開發(fā)人員,目前是 TecMint 的內(nèi)容創(chuàng)作者,他喜歡在電腦上工作,并堅(jiān)信分享知識(shí)。
via: https://www.tecmint.com/mimipenguin-hack-login-passwords-of-linux-users/
作者:Aaron Kili[6] 譯者:geekpi 校對(duì):wxy
本文由 LCTT 原創(chuàng)編譯,Linux中國(guó) 榮譽(yù)推出
[1]: sudo 命令 - https://www.tecmint.com/sudoers-configurations-for-setting-sudo-in-linux/
[2]: 如何在 Linux 中用密碼保護(hù)一個(gè) vim 文件 - https://linux.cn/article-8547-1.html
[3]: 如何在 Linux 中生成/加密/解密隨機(jī)密碼 - https://www.tecmint.com/generate-encrypt-decrypt-random-passwords-in-linux/
[4]: 如何在 RHEL/CentOS/Fedora 中用密碼保護(hù) GRUB - https://www.tecmint.com/password-protect-grub-in-linux/
[5]: 在 CentOS 7 中重置/恢復(fù)忘記的 root 用戶賬號(hào)密碼 - https://linux.cn/article-8212-1.html
[6]: Aaron Kili - https://www.tecmint.com/author/aaronkili/
本文章中所有內(nèi)容僅供學(xué)習(xí)交流,抓包內(nèi)容、敏感網(wǎng)址、數(shù)據(jù)接口均已做脫敏處理,嚴(yán)禁用于商業(yè)用途和非法用途,否則由此產(chǎn)生的一切后果均與作者無關(guān),若有侵權(quán),請(qǐng)聯(lián)系我立即刪除!
j_mcmm: 351faaef3ba8f4db2001ec621344dbbf
在以前的案列中,我們都是通過直接搜索來定位加密參數(shù)的位置的,直接搜索出來的定位通常是比較準(zhǔn)確的,但是有個(gè)弊端就是搜索的結(jié)果可能會(huì)非常多,需要人工去過濾,需要一定的經(jīng)驗(yàn)去判斷準(zhǔn)確的加密位置,而且對(duì)于一些反爬力度較大的站點(diǎn)來說,可能做了很多混淆,根本就搜索不到,那么今天的案列中,我們將介紹另一種方法,即 DOM 事件斷點(diǎn),需要注意的是,DOM 事件斷點(diǎn)也是有弊端的,通過這種方法找到的位置通常在加密處理之前,也就是說想要找到準(zhǔn)確的加密位置,還需要進(jìn)一步分析上下文才能確定。
DOM 全稱 Document Object Model,即文檔對(duì)象模型,是 HTML 和 XML 文檔的編程接口,定義了訪問和操作 HTML 文檔的標(biāo)準(zhǔn)方法。
一個(gè)網(wǎng)頁(yè)其實(shí)就是一個(gè) HTML 文件,經(jīng)過瀏覽器的解析,最終呈現(xiàn)在用戶面前,一個(gè)簡(jiǎn)單的 HTML 頁(yè)面代碼如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>我的第一個(gè)HTML頁(yè)面</title>
</head>
<body>
<h1>我的第一個(gè)標(biāo)題</h1>
<p>我的第一個(gè)段落</p>
</body>
</html>
在 HTML 頁(yè)面代碼中,head、body 等標(biāo)簽不是隨意排列的,它們有自己的規(guī)則。首先,它們是嵌套的,一層套一層,比如 html 套 body,body 又套 h1,其次, 每一層可以同時(shí)存在很多標(biāo)簽,比如 head 和 body 屬于同一層,它們被外面的 html 套著,這樣的結(jié)構(gòu)很像計(jì)算機(jī)里的文件夾,例如,我的電腦是最外層,里面套著 C、D、E、F 盤,每個(gè)盤里又有很多文件夾,文件夾里又有文件夾,逐個(gè)打開后才能看到具體的文件。
為什么要按照這種結(jié)構(gòu)來組織呢?目的其實(shí)是方便解析和查詢,解析的時(shí)候,從外向里循序漸進(jìn),好比按照?qǐng)D紙蓋房子,先蓋圍墻,再蓋走廊,最后才蓋臥室。查詢的時(shí)候,會(huì)遵循一條明確的路線,一層一層地縮小范圍,查找效率會(huì)非常高。
所以,瀏覽器在解析 HTML 文檔時(shí),會(huì)把每個(gè)標(biāo)簽抽象成代碼里的對(duì)象,按照這種層次分明的結(jié)構(gòu)組織,這就是 DOM,HTML DOM 結(jié)構(gòu)如下圖所示:
本次逆向的目標(biāo)是某商盟的登錄密碼,本案例的加密參數(shù)為 j_mcmm
,加密比較簡(jiǎn)單,直接全局搜索也很容易找到加密的地方,但是本次我們不使用全局搜索,改用 DOM 事件斷點(diǎn)來定位加密位置。
打開開發(fā)者工具,點(diǎn)擊左上角箭頭按鈕,再點(diǎn)擊登陸按鈕,即可定位到該按鈕元素的位置,在 Elements 面板,右邊選擇 Event Listeners,即事件監(jiān)聽列表,可以看到一些鼠標(biāo)點(diǎn)擊、鼠標(biāo)移動(dòng)、提交、加載等事件:
我們將這些事件展開具體看一下,submit 提交事件,定位到 div 標(biāo)簽,div 標(biāo)簽下有一個(gè) form 表單,form 的作用就是為用戶輸入創(chuàng)建 HTML 表單,向服務(wù)器傳輸數(shù)據(jù),跟進(jìn)這個(gè) submit 用到的 JS 文件,大概率就能夠找到加密的地方,這里還有個(gè)小技巧,如果事件太多,不太好判斷哪個(gè)是提交數(shù)據(jù)的,或者哪個(gè)是登錄事件的,可以選擇性的點(diǎn)擊 Remove,移除一些事件,再登錄,如果登錄不能點(diǎn)擊,或者 Network 里沒有提交請(qǐng)求,就說明 Remove 的這個(gè)事件剛好就是目標(biāo)事件。
跟進(jìn) submit 事件用到的 JS,會(huì)定位到 function e()
的位置,往下看,就可以找到疑似加密的地方,這里出現(xiàn)了兩個(gè) j_mcmm
,分別是 g.j_mcmm
和 P.j_mcmm
,埋下斷點(diǎn)進(jìn)行調(diào)試,經(jīng)過對(duì)比可以發(fā)現(xiàn) g.j_mcmm
是最終需要的值:
在 g.j_mcmm=b
語句中,b 的值就是最終加密后的值,往上找,第 1125 和 1126 行 var e=b;
b=F(F(b) + c);
,把明文密碼賦值給 b,c 為驗(yàn)證碼,經(jīng)過 F 這個(gè)函數(shù)的處理后得到加密值,繼續(xù)跟進(jìn) F 函數(shù):
可以看到其實(shí)就是經(jīng)過以下函數(shù)的處理:
function d(a) {
return n(e(o(m(a + "{1#2$3%4(5)6@7!poeeww$3%4(5)djjkkldss}")), 32))
}
這個(gè)函數(shù)中,又包含 n, e, o, m 函數(shù),這里不再每個(gè)函數(shù)去剝離,直接將這個(gè)函數(shù)往下所有單個(gè)字母的函數(shù) copy 下來本地調(diào)試即可。
GitHub 關(guān)注 K 哥爬蟲,持續(xù)分享爬蟲相關(guān)代碼!歡迎 star !https://github.com/kgepachong/
以下只演示部分關(guān)鍵代碼,不能直接運(yùn)行!完整代碼倉(cāng)庫(kù)地址:https://github.com/kgepachong/crawler/
function getEncryptedPassword(a, b, c) {
// a: 用戶名, b: 密碼, c: 驗(yàn)證碼
function d(a) {
return n(e(o(m(a + "{1#2$3%4(5)6@7!poeeww$3%4(5)djjkkldss}")), 32))
}
function e(a, b) {}
function f(a, b, c, d, e, f) {}
function g(a, b, c, d, e, g, h) {}
function h(a, b, c, d, e, g, h) {}
function i(a, b, c, d, e, g, h) {}
function j(a, b, c, d, e, g, h) {}
function k(a, b) {}
function l(a, b) {}
function m(a) {}
function n(a) {}
function o(a) {}
c.hex_md5=d
b=d(d(b) + c);
return b
}
// 測(cè)試樣例
// console.log(getEncryptedPassword('123123', '1231234', '6798'))
例最終效果如下:
一、設(shè)置整個(gè)網(wǎng)頁(yè)的背景色
圖1
圖2
二、創(chuàng)建一個(gè)盒子,讓其水平居中,距離上邊200像素。
圖3
圖4
三、把盒子設(shè)置四個(gè)角為圓角,圓10個(gè)像素。
圖5
圖6
四、在大盒子里做一個(gè)ding盒子,設(shè)置它上面兩個(gè)角是圓角,下面兩個(gè)角是直角。
圖7
圖8
五、ding盒子里輸入幾個(gè)字,讓這幾個(gè)字在盒子里水平居中,垂直居中,關(guān)于盒子內(nèi)居中問題可參看我寫的文【203】。
圖9
圖10
六、在deng盒子里面再做三個(gè)小盒子,取名為ref,注意如果這三個(gè)盒子不用浮動(dòng),會(huì)有什么效果,這個(gè)你可以試試看。
圖11
圖12
七、往ref盒子里面添加信息,發(fā)下圖,這里順便學(xué)習(xí)兩個(gè)標(biāo)簽,一個(gè)是input,一個(gè)是button。
圖13
圖14
八、去掉背景色,然后用盒子內(nèi)居中的方法,讓這些元素居中。
圖15
圖16
九、通過樣式,設(shè)置按鈕的大小和字的大小,這里我特地用id來給元素上名字,不同于class,在樣式里調(diào)用的時(shí)候,一個(gè)是前面加.一個(gè)是前面加#。
圖17
圖18
十、最后設(shè)置一下密碼輸入框,輸入內(nèi)容時(shí)為密碼隱藏符號(hào)。
圖19
圖20
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。