まず、難読化された悪意のあるファイル(新鮮な、暑い)の悪意のあるファイルの明示的な分析は、[de]コード難読化の問題に学生を関心を寄せる方法の例です。
アルゴリズムのフローチャートと実行ルート(
NDV GTKのRD制御 )の構築を伴う深くて骨の折れる分析はここにはありません。
導入する代わりに
多くの教科書に典型的な人工的な例は、残念なことに、多くの場合、問題を理解する意欲を低下させます。 また、研究中の問題に関する最初の教育課題が非常に複雑であるため、推論のスレッドを失う可能性があります(経験がない場合は明らかに、まだそうではありません)。
上記に基づいて、資料を提示することは教師の仕事であり、責任であることを思い出して、難読化された悪意のあるスクリプトの明確な分析を示すことが望まれていました。 幸いなことに、これを「良い」ものにすることはそれほど大きな問題ではありません。業界全体が創造と流通に懸命に取り組んでいます。
それは受信されました:前週の検疫の印象的な選択と、感染したサイトからの控えめなスクリプトの選択(2015年)。
どこから始めますか? 受け取った「良い」の準備と。
ステップ1(準備)
すべてのアーカイブを解凍します。より正確には、アーカイバ(この場合は7zipを使用)を使用して、アーカイブを認識して解凍します。 他に何をしようとしていますか? 結果のコレクションでは、さまざまな拡張子(zip、rar、arj、lzh、ace、exe、uueなど)を持つファイルがアーカイブになる可能性があるためです。
* .zipファイルは常にzipアーカイブではありません既存のコレクションでは、あるアーカイバの拡張子特性を持つファイル内で、データが別のアーカイバからのアルゴリズムでパックされたときに、状況が明らかに現れました。 拡張子がさまざまなアーカイブの特徴であるファイルの約50%には、rarアーカイブが含まれていました。
計算は明らかです。通常のユーザーのワークステーション(攻撃のターゲットと見なされる場合)には、拡張子だけでなくファイルヘッダーも分析するアーカイバが通常インストールされます。拡張子のみに焦点を当てたファイルを処理します。
中間ノード上のアンチウイルスからコードを隠すためのこのような手法の有効性は、おそらくほぼゼロです。
として、すべての重複を削除します 定量的な指標には興味がありません。 この段階で取得したリスト、またはファイル名を覚えておきましょう、まだ必要です。
2番目のステップ(ソート)またはメンデレーエフの足跡
ファイルのリストを取得したので、次に何をしますか? ファイルをタイプ別に分割します。
- 識別されたすべてのアーカイブ(現在は単なるトランスポートコンテナー)。
- コンパイルされたすべての実行可能ファイル(それらの分析は通常より複雑で、より多くの時間とデバッガーが必要です)。 利用可能なもののうち、exeとscrのみがそこに到達しました(拡張子がcomのexeファイルが1つありました)。
- すべてのスクリプト、各タイプは個別に。 コレクションには多くのタイプはなく、4:js、php、vbs、wsfのみでした。
- 最後のグループには単一のhtmlファイルが含まれていました。 ファイルにはスクリプトが含まれていなかったため、以前のグループには含まれていませんでした。
繰り返しになりますが、定量的な指標-どのファイルタイプがより多く-は私たちにとって興味のないものです。 何をすべきかを想像するために、彼らが受け取ったものを何らかの形で整理する必要があります。 「質量」でソートされたメンデレーエフの記憶:
- ファイルの各グループをサイズでソートします。
- ファイル名を長さでソートし、拡張子を破棄します(ここではファイルの一般的なリストが役立ちます)。
3番目のステップ(分析)または「注視の方法」
長さ順に並べられたファイルのリストに「close look method」を適用する:
- 100文字を超える長さのリーダーはすぐに明らかになります。 したがって、マルウェアはファイル拡張子を隠します。 そのような目標を意図的に設定しなければ、それを見るのはほとんど不可能です。
非常に長い名前の例2016年3月14日に一次文書の添付された登録簿との和解の行為。 1Cアカウンティング_xlsxからアンロード
2016年3月16日付の新しい文書、ウイルス対策によってチェックされた日付の検証と印刷の現在のバージョンok
- 同じ長さのかなりの数のファイルが注目されます。よく見ると、名前の構造が見えています。 おそらく、これらのファイルは何か別のものによって結合されています。
3文字と10個の数字GUA1343958710
RQQ7223899805
VII964085171413
YAF3892579406
- 8文字と10文字の長さの名前の中には、さまざまな形式の多くの日付がありますが、この情報からはあまり情報が得られません。
デバッガーを使用しない場合、コンパイルされた実行可能ファイルから次のものが取得されます。
- ほとんどの場合、アイコンはドキュメントアイコン(doc(x)、xls(x)、pdf、Libre / OpenOfficeに典型的なアイコンはこれまで見たことがない)またはマルチメディア(jpeg、mp3など)に置き換えられます。
- 一部のファイルには電子署名が含まれていましたが(Microsoftによるものと思われます)、無効です。
スクリプトの大規模なグループに移る前に、単一のhtmlファイルを検討します。 彼は本当に面白いことを喜ばれませんでした:改行文字とたくさんのコメントを削除しました。 これは簡単にクリーンアップされ、攻撃者が使用したい技術がすぐにわかります。
html<meta http-equiv='refresh' content='0; url=http://bad.url/' />
レセプションはシンプルで分かりやすく、長い間知られています。
wsfスクリプトには興味深いものは見つかりませんでした。 複数行コメントの基本的な削除後、同じコードが残っていました(復号化が必要ですが、処理されませんでした)。
wsf <job> <script language="JScript.Encode"> #@~^+goAAA==&JNi ... DAA==^#~@ </script> </job>
JSの難読化解除-サブジェクトはHabréで繰り返し公開されますが、繰り返しすぎても意味がありません。 コレクションにはさまざまなトリックがありました。
面白くて鮮やかなのは、ファイルのグループ「3文字と10桁」に細心の注意を払ったことです。 変数に同じ名前が与えられ、他のいくつかの「化粧」変換が実行された場合(インデントするために、数値に対して算術演算を実行する[1 + 4 + 1 = 2 + 2 + 2 = 3 + 2 + 1 = 6]) 、その後、ファイルの類似性が明らかになりました。 ファイルは明らかに1つの難読化ツールによって処理されました。 これにより、ファイルストリームから類似したグループを特定し、個々のファイルを徹底的に分析して、グループに関する結論を導き出す能力が実証されました。
アーカイブを使用したマルウェアトリックの分離
アーカイブの拡張子の変更については、既に上記で説明しています。
正しい拡張子を持つアーカイブが互いに入れ子になっており、ありません。 ネスティングは著者の想像力に依存し、2つの可能な目標を追求します。
- ウイルス対策スキャンから隠す(通常、リソースを節約するために、ウイルス対策ソフトはスキャンされたアーカイブのネストの深さを制限します);
- 悪意のある負荷を起動するようにユーザーを誘発します[注意さえします]。 ユーザーは添付されたアーカイブをマウスで数回クリックして(またはシェルでEnterキーを押して)アーカイブを開き、高い確率で、悪意のある負荷に対して同じアクションを自動的に実行します。
アーカイブ機能を使用した単純な難読化の受信は、phpファイルで特定されました。 この場合、アンチウイルスによる難読化と非表示およびシークに加えて、圧縮によりファイルサイズが大幅に節約されました。
php eval(gzinflate(...));
コードを少し変更するだけで、実行はされませんが、結果は保存され、数回の反復でコンテンツにアクセスできます。 タスクは難しくなく、すべての生徒が解決できます。 その結果、最初の10kは、30kのphpスクリプトになります。 このスクリプトには、パスワードハッシュ検証付きの認証ブロックが含まれていますが、別の小さな変更により検証が無効になり(またはハッシュが置き換えられ)、実際の「実際のライブハッカーシェルコード」が表示されます:便利なインターフェイスとコマンドを実行できるミニファイルマネージャー