2019-2020-2 20174310 Sui Runqi「ネットワーク対策技術」Exp4悪意のあるコード分析

1.実験目標

 1.実用的な要件

  • 疑わしいプログラムが実行されているかどうかを確認するために、独自のシステムの実行ステータスを監視します。
  • マルウェアを分析する場合は、Exp2またはExp3で生成されたバックドアソフトウェアを分析します。分析ツールは、ネイティブ命令またはsysinternals systracerスイートをできるだけ使用します。
  • ホストに今後の作業で問題があると思われる場合、このアイデアを実験で使用し、まずシステム全体を監視して不審なオブジェクトが検出されるかどうかを確認し、次にさらに不審なオブジェクトを分析して特定の動作と性質を確認できます。

2.練習内容

  1. システム稼働監視
    • スケジュールされたタスクなどを使用して、コンピューターがインターネットに接続されているプログラムと接続されている外部IPがどこにあるかを毎分記録します。一定期間実行し、ファイルを分析して分析結果を要約します。目的:ネットワーク化されたすべてのプログラムの接続と操作を調べ、この操作が適切で妥当かどうかを確認し、さらに分析するためにパケットをキャプチャする。
    • sysinternalsにsysmonツールをインストールして構成し、適切な構成ファイルを設定して、ホストの疑わしい動作を監視します。
    • 実際のログの分析は、Linuxテキスト処理命令などの以前に学習した知識と組み合わせて、独自の創造性を発揮する必要もあります(大量のデータからルールを見つけて問題を見つけることは困難です)。
  2. マルウェア分析
    • ソフトウェアがターゲットマシンに接続されたときにバックドアソフトウェアを分析し、ソフトウェアが接続に戻って開始されたときに他の操作(プロセスの移行や画面キャプチャなど)を分析します。どのレジストリエントリが読み取られ、追加され、削除されますか。
    • 読み込まれた、追加された、または削除されたファイル。
    • 接続されている外部IP、送信されるデータ(キャプチャ分析)。

第二に、実用的なプロセス

 1.システム稼働監視予定タスク

システムが1分ごとにネットワークに接続しているプログラムを自動的に検出するように、スケジュールされたタスクを作成します。

管理者モードを使用してcmdモードを実行し、次のコマンドを入力します

schtasks / create / TN netstat4310 / sc MINUTE / MO 1 / TR "cmd / c netstat -bn> d:\ netstat4310.txt"(前にスクリーンショットを撮ろうとしたので、タスクが既に存在しているので、ここで再作成してください)

  • TN:タスク名、この場合はnetstat4310
  • SC:SCheduleタイプ、この例ではMINUTE、分単位の時間
  • MO: MOdifier
  • TR:タスク実行。実行されるコマンドはnetstatです。
  • -bn、bは実行可能ファイル名を表示することを意味し、nはIPとポートを番号で表示することを意味します

dドライブのルートディレクトリに新しいテキストファイルを作成し、次のように入力します。

  • 日付/ t >> d:\ netstat4310.txt
  • 時間/ t >> d:\ netstat4310.txt
  • netstat -bn >> d:\ netstat4310.txt

保存後、バッチコマンドとしてファイルの名前をnetstat20174310.batに変更します。

[コントロールパネル]-> [システムとセキュリティ]-> [管理ツール]-> [タスクスケジューラ]で作成したタスクを見つけ、プランのプロパティを変更します。

実行には最高の権限を使用してください。そうしないと、実行に失敗し、構成がwindows10に変更されます。

 スクリプトを作成したbatファイルに置き換えます

タスクの実行後、バックグラウンドデータの記録を開始します。これにより、コンピューターは通常の使用状態に保たれます。約1時間後、Dドライブにあるnetstat4310.txtファイルを開いて内容を表示します。

テキストファイルをExcelにインポートし、Excelのデータ処理機能を使用してデータパースペクティブを生成します。

  •  360se.exe:360ブラウザ
  • 360tray.exe:360ファイアウォール
  •  chrome.exe:Google Chrome
  • EXCEL.EXE:Excelプログラム
  • GDCAgent.exe:レノボサービスセンター
  • mysqld.exe:mysqlデータベースプログラム

結果の観察から、私のコンピューターには自動起動ソフトウェアがないように見えるので、比較的安全なはずです。

2. Sysmonを利用したシステム稼働監視

公式Webサイトにアクセスして、SysinternalsSuite.zipをダウンロードし、解凍します。

ご使用のシステムに応じてSysmonのバージョンを選択してください私のコンピューターは64ビットシステムなので、Sysmon64.exeを選択してプログラムのプロパティでバージョン情報を表示します。

  •  

 そして、SysinternalsSuiteがあるディレクトリにテキストファイルを作成し、次のコードに保存して、名前をsysmon20174310.xmlに変更します。

<Sysmon schemaversion = "10.42"> 
  <!-すべてのハッシュをキャプチャ-> 
  <HashAlgorithms> * </ HashAlgorithms> 
  <EventFiltering> 
    <!-署名を除いてすべてのドライバーをログに記録-> 
    <!-にMicrosoftまたは
    Windows- > <DriverLoad onmatch = "exclude"> 
      <Signature condition = "contains"> microsoft </ Signature> 
      <Signature condition = "contains"> windows </ Signature> 
    </ DriverLoad> 

    <NetworkConnect onmatch = "exclude"> 
      <Image condition = "end with"> chrome.exe </ Image> 
      <Image condition = "end with"> iexplorer.exe </ Image>
      <SourcePort condition = "is"> 137 </ SourcePort> 
      <SourceIp condition = "is"> 127.0.0.1 </ SourceIp> 
    </ NetworkConnect> 

    <CreateRemoteThread onmatch = "include">
      <TargetImage condition = "end with"> explorer.exe </ TargetImage> 
      <TargetImage condition = "end with"> svchost.exe </ TargetImage> 
      <TargetImage condition = "end with"> winlogon.exe </ TargetImage> 
      <SourceImage condition = "end with"> powershell.exe </ SourceImage> 
    </ CreateRemoteThread> 
  </ EventFiltering> 
</ Sysmon>
  • ProcessCreate プロセスの作成。ここでのプロセス名には、プロセス名で終わるすべてのプロセスが含まれます
  • NetworlConnect ネットワーク接続、ブラウザーのネットワーク接続、つまり、ソースIPが127.0.0.1(ローカルIP)のネットワーク接続と宛先ポートが137の接続サービス(ローカルエリアネットワークにIDまたはIPクエリサービスを提供)をフィルターで除外し、宛先ポートを次のように確認します。 80(http)および443(https)ネットワーク接続
  • CreateRemote リモートスレッドの作成
  • FileCreate Time プロセス作成時間
  • onmatch include/exclude 検査不要/必須リストの設定

管理者としてcmdを実行し、Sysmon64.exeディレクトリでSysmon64.exe -i sysmon20174310.xmlを実行します(以前にテストされているため、登録されていることが示されています)。

  •  

 [イベントビューア(ローカル)]-[アプリケーションとサービスログ]-[Microsoft]-[Windows]-[Sysmon]-[操作]を介して、構成情報[sysmon20174310.xml]に従って記録されたプロセス情報、プロセス番号パスなどを表示します。システム情報

  •  

3.マルウェアの分析

3.1 Wiresharkを使用した分析

マルウェア(実験3でパックされたバックドアプログラムのバックドアを使用して接続する)を使用し、ログ情報とWiresharkパケットキャプチャ情報を使用して、システムプロセスルールを分析します。
イベントビューアで、実行時間に応じて、対応するバックドアプログラムの動作に関する関連情報を見つけます。Wiresharkでフィルタフィルター条件[ip.addr == 192.168.80.131]を入力して、関連するプロトコルパッケージ情報を表示します

  • KingシステムとWindowsシステムのPing通信ICMPパッケージ
  • MSF接続時にTCPパケットを  バウンス

  • dirディスクのバックドアプログラムディレクトリにあるファイルを確認し、注意深く調べて、ログが更新されていないことを確認します

3.2 SysTracerを使用した分析

SysTracerをダウンロードしてインストールする

 

ポート番号4310を入力してください

インストールが完了し、使用できます

  • バックドアを開く前にスナップショットを作成し、[選択]-> [スナップショットを作成]をクリックすると、スナップショップ#1が表示されます。
  • Kaliが監視を開始し、Windowsがバックドアを実行し、接続が成功した後にスナップショットを取得した後、完了後にSnapshop#2が表示されました。
  • MSF関連の操作sysinfoスクリーンショットをkaliで使用し、完了後にSnapshop#3を表示します。
  • 接続が完了すると、スナップショットにSnapshop#4が表示されます。

 

#2で簡単な分析を最初に実行します。最初に[アプリケーション]-> [実行中のプロセス]-> [4310srq_backdoor.exe]-> [開いているポート]を選択して、接続バックアドレス、リモートアドレス、ポート番号を表示します。

  •  #1と#2を比較すると、バックドア操作の前後でレジストリに多くの変更が見られます。
  •  同時に、バックドアプログラムのレコードを見つけ、TCP接続を確立しました
  •  #3と#4を比較すると、#1と#2に比べて、削除操作が多いことがわかります。
  •  注意深く検索した結果、バックドアプログラムに対応する削除操作が見つかりました

3.3プロセスエクスプローラーを使用した分析 

Kaliが正常に接続した後、ソフトウェアを開いて詳細情報を確認します。

 バックドアプログラムを見つけるのは簡単です。

[表示]-> [列の選択]を選択すると、バックドアプログラムの分析に役立つメインページに表示できるオプションがいくつかあります。

イメージパス:プロセスのファイルパスを
表示コマンドライン:プロセスのコマンドラインパラメーターを
表示イメージタイプ:プロセスが64ビットプロセスか32ビット
セッションID かを表示:
プロセスの現在のセッションIDを表示ユーザー名:プロセスの現在のアクセス許可を表示、システムユーザー権限がネットワーク管理者権限か通常の管理者権限か

 

 表示項目を追加することにより、バックドアプログラムのより詳細な分析と調査

たとえば、Image Pathに従って、バックドアプログラムの場所を直接検索したり、クリーンアップしたりします。

3.4 OllyDbgを使用してバックドアプログラムを分析する

コードを分析する前に、まずwin32で書かれたログインダイアログボックスを分析して、ODの導入を容易にします。

  • ダイアログの初期インターフェース
  •  入力情報が正しい場合に表示されます
  • 入力が間違っている場合に表示されます
  •  通常のプログラミング経験に従って、ODでexeプログラムを開きます
  •  呼び出しの前に4つの必須パラメータがスタックにプッシュされているため、このダイアログボックスのメイン関数のエントリを大まかに決定できます。

  • Enterキーを押して機能を追跡し、それが正しいことを確認します 

  • 2番目のパラメーターはウィンドウ処理関数です。ジャンプするにはctrl + gを使用します 

  • ここに正しい出力と間違った出力の2つのウィンドウが見つかりました。それが正しいかどうかを判断する機能が一番上にあるはずです

  • Enterを押し続けてこの機能を実行します

  • アセンブリコードの意味に応じて、判定条件が見つかりました。アカ​​ウントの長さは3に等しく、パスワードの長さは5に等しくなければなりません。成功ダイアログにジャンプできます
  •  

  • 案の定(プロセス全体で一部の手順が省略されています)

以下はバックドアプログラムの追跡を開始します

ODでバックドアプログラムを開く

  • 分解パネル
  •  登録パネル
  •  データパネル
  •  スタックパネル

 まず、プログラムの大まかなトレースを作成します(F7は関数に入りません、F8は関数に入ります)。

プログラムはこのセクションで循環し続けることがわかりました

 

 プログラムのこの部分の解釈と分析、およびこのコマンドのために、常にループすることがわかりました

 

 バックドアについての私たちの理解によると、連続ループが発生する可能性があるのは1つだけです。これは、攻撃者のリバウンド接続を待機するため、最初にフラグレジスタZFを1に変更します。

それを実行し続け、何が起こるかを観察します

 

このプログラムを正常に分析せずに、実行を続け、追跡を続け、その後何度もループに陥った

私はバックドアプログラムを書いた経験がないため、アセンブリコードやジャンプのいくつかの意味を理解できません。通常、この領域について詳しく学ぶ必要があります。

3.5バックドアプログラムのPE構造の分析

ここで自分で作成したPEパーサーを使用します。この機能は、以下に示すように、ロード後にオンラインでダウンロードされる多くのPEパーサーと似ています。

 

 

プログラムのPEヘッダーとセクションテーブルの情報から、このプログラムと通常のexeプログラムの違いがわかりません

インポートテーブルから始めて、dllが使用した特別な場所を観察します

 

 

 このプログラムは、WindowsソケットのDLLを使用して攻撃者をリバウンドさせ、情報を送信します

 

 通常のプログラミング経験によると、ソケットプログラミングはDLLで情報関数を送受信するために使用されます。これは、コンピューター情報を外部に送信する可能性として大まかに判断できます。

3.基本的な質問に答える

職場のホストに悪意のあるコードがあると思われるが、推測しただけの場合は、システムが毎日行っていることを監視したいだけです。監視したい操作と監視方法を設計してください。

  • sysmonツールを使用して、監視ポート、レジストリ情報、ネットワーク接続およびその他の情報を構成し、それによって生成されたログファイルで表示します
  • ワイヤーシャークを使用してパケットを表示します。
  • systracerを使用してスナップショットを取得し、レジストリやファイルなどの情報を比較します
  • プロセスモニターとプロセスエクスプローラーを使用して、プロセスの実行ステータス、ファイルシステム、およびレジストリアクティビティを監視および表示します。
  • 一部の疑わしいプログラムでは、PEパーサーを使用して、インポートされた関数を監視し、その特定の関数を判別できます。
  • ODを使用してプログラムを動的に分析するか、IDAの静的分析を実行します

プログラムまたはプロセスに問題があると判断された場合、それについてさらに情報を得るにはどのツールが必要ですか?

  • systracerツールを使用してマルウェアを分析し、レジストリとファイルへの変更を表示します。
  • Wiresharkを使用して、パケットキャプチャを分析し、ホストとの通信プロセスを監視します。

4.実験のまとめ

 この実験により、動的分析と静的分析の欠点、ソケットプログラミングに関するコードの経験が十分でないことなどを十分に理解できました。一部のコードの意味とそのコメントを理解できず、その結果、バックドアプログラムの逆分析が行われました。次のステップは、この分野の学習を強化することです。

 同時に、元のネットワークセキュリティはそれほど離れていないことにも気づきました。通常、実験で学んだことを使用して、コンピューターが安全かどうかを検出します。

 

おすすめ

転載: www.cnblogs.com/srq111/p/12695074.html