ボンネットの下の猫。 パート2







みなさんこんにちは! 最後の部分では、hashcatの並列「ハッシュクラッキング」タスクを「オーケストレーション」するための既存のソリューションについて説明しました。



このパートでは、Hashtopolisプロジェクトについて引き続き説明します。 サーバーでWeb環境のコンポーネントを準備することを検討してください。 Hashtopolisサーバーとエージェントの主要なパラメーターを分析しましょう。



Hashtopolisのインストールと構成



Hashtopolisサーバーは、その作業のために、次のコンポーネントを必要としています。





Hashtopolisはnginxをサポートしています。このため、.htaccessファイルを含むすべての「/ hashtopolis」サブディレクトリに対してアクセスブロッキングを設定する必要があります。 この記事では、HashtopolisをApache2 Webサーバー(したがってLAMP)とともにインストールする方法を説明します。



XAMPPを使用してプロジェクトを理解することもできます。バージョン5.6.40では、すべてが問題なく「開始」されました。 この記事の資料は、XAMPPでHashtopolisを構成するのに役立ちます。



ネタバレの下で、Hashtopolis Dockerイメージについて少し:



Hashtopolisをdockerにインストールします
Docker Hubで複数のhashtopolisサーバーイメージが見つかりましたが、少なくともいくつかの信頼を生成したのは1つだけです: hub.docker.com/r/kpeiruza/hashtopolis



作者はあまり面倒ではなく、Dockerのhashtopolisの「インストール」の説明を追加しました。 設定の詳細とコンテナについて詳しく説明します。 重要な注意-ポートマッピングを構成するとき(たとえば、 'docker run ... -p 80:80')、OSの機能とHashtopolisホストエージェント上のWebサーバーにアクセスする必要性を考慮してください。



Webアプリケーション自体のセットアッププロセスについては、記事の後半で説明します。



LAMPのインストール



使用したプロジェクトのバージョン:Hashtopolis 0.10.1



Hashtopolisサーバーが機能するためには、次の構成のホストが十分にありました。





DBMSを使用するには、phpMyAdmin、Adminer、または別のアナログをインストールすることをお勧めします。 したがって、Hashtopolis機能に問題がある場合は、ブラウザーを離れることなくトラブルシューティングを実行できます。



LAMPサーバーにソフトウェアをインストールするプロセスでは、HashtopolisプロジェクトのWiki(https://github.com/s3inlc/hashtopolis/wiki/Server-Prerequisites)の指示を使用しました。



  1. sudo aptアップデート&& sudo aptアップグレード
  2. sudo apt install mysql-server
  3. sudo apt install apache2
  4. sudo apt install libapache2-mod-php php-mysql php php-gd php-pear php-curl
  5. sudo apt install git
  6. sudo aptインストールphpmyadmin


mysqlパッケージのインストール中にインタラクティブ構成ウィザードが起動されなかった場合は、mysql_secure_installationコマンドを実行する必要があります。



したがって、「対話型ウィザード」を使用して、DBMSにアクセスするためのパスワードが設定されます。



次に、MySQLでユーザーを作成し、このユーザーが読み取り/書き込みアクセスできるデータベースを作成する必要があります。



Hashtopolisサーバーのインストールに進みます。



プロジェクトのgitリポジトリからHashtopolisのソースコードを複製できます。指示に従って行動し、リポジトリを複製し、hashtopolisディレクトリから「src」を「www」に再帰的に転送しました。



  1. git clone github.com/s3inlc/hashtopolis.git
  2. cd hashtopolis / src
  3. sudo mkdir / var / www / hashtopolis
  4. sudo cp -r * / var / www / hashtopolis
  5. sudo chown -R www-data:www-data / var / www / hashtopolis


開発者が推奨するように、「KeepAliveTimeout」ディレクティブを10ミリ秒に設定します。 正当化:

PythonクライアントでTCPセッションの使用を活用するには、サーバーのタイムアウトをステータス更新時間よりも高い値に設定する必要があります
無料の翻訳:「Pythonで実装されたクライアントでTCPセッションを使用するには、Webサーバー構成のセッションタイムアウトを「ステータス更新「エージェント値」よりも高く設定する必要があります。



Apache2構成ファイル(システムでは、ファイル「/etc/apache2/apache2.conf」へのパス)で(お気に入り)エディターを開き、「KeepAliveTimeout」ディレクティブの値を5から10に変更します。



必要に応じて、Webサーバー構成のHashtopolisフォルダーにエイリアスを追加します(ディレクトリが「/ var / www / html」以外のディレクトリに作成された場合)。 また、「AllowOverride All」ディレクティブを追加して、子ディレクトリで.htaccessファイルを使用できるようにします。



念のため、「ServerSignature Off」および「ServerTokens Prod」ディレクティブを「/etc/apache2/apache2.conf」設定ファイルに追加し、その後のapache2サービスの再起動とともに、「phpMyAdmin」ディレクティブへのアクセスに許可されたIPアドレスを示しました1.2.3.4/28の「構成内」/etc/apache2/conf-enabled/phpmyadmin.confから許可します。 Hashtopolisへの任意のアドレスからのアクセスを許可するか、locahost / PrivateIP-spaceを制限します-特定のセットアップに依存します。 私たちの場合、より良いので、このポイントを決めてください。



hashtopolisディレクトリへのアクセスを制限することをお勧めします。 「/ hashtopolis」ディレクトリにアクセスするには、Webクライアントは基本認証を通過する必要があります。



apache-utilsパッケージをインストールします(以前に実行していない場合)。 ユーティリティのうち、htpasswdはこの段階で必要です。 ファイルとユーザーログインを作成します。



sudo htpasswd -c /etc/apache2/.htpasswd kraud
      
      





パスワードを入力すると、ユーザーは.htpasswdファイルに追加されます。コマンド「cat /etc/apache2/.htpasswd」で確認できます。 ユーザーの追加は、「-c」キーなしで同様のコマンドによって実行されます。



次に、ディレクティブをapache2 / sites-available / 000-default.conf configに追加して、Webアプリケーションディレクトリへのアクセスを設定します。 その結果、次のような「ディレクトリ」設定を取得しました。



 Alias /hashtopolis "/var/www/hashtopolis" <Directory /var/www/hashtopolis> AuthType Basic AuthName "Restricted Content" AuthUserFile /etc/apache2/.htpasswd Order allow,deny Allow from all AllowOverride All Require valid-user </Directory>
      
      





「Basic-Auth」を使用する場合は、Hashtopolisエージェントの構成にパラメーターを追加する必要があることに注意してください(ファイル「\ hashtopolis_agent_dir \ config.json」):



 { "url": "http://1.2.3.4/hashtopolis/api/server.php", "voucher": "", "token": "token", "uuid": "d54de86f-3942-4127-af63-f257c45b66cd", "debug": false, "auth-user": "kraud", "auth-password": "password" }
      
      





Hashtopolis Agentについては後ほど説明します。



また、Hashtopolisアプリケーション用の新しいデータベースと、このデータベースにアクセスできるMySQLユーザーを作成する必要があります。 次に、PMAまたはコンソールを使用してデータベースを作成することを好む人は、これは難しくないはずです。 データベース名と資格情報をメモに保存します。これらは後で必要になります。



これらの手順の結果として、Hashtopolis Webアプリケーションのインストールページが次のURLでロードされるはずです。http:// <server_ip> / hashtopolis:







これが発生しない場合、問題はおそらくディレクトリ「/ var / www / hashtopolis」のアクセス権、またはWebサーバーの設定(「エイリアス」のエラーなど)にあります。 URL http:// <server_ip> /hashtopolis/src/index.phpまたはhttp:// <server_ip> /hashtopolis/src/install/index.phpを確認する価値があります。



次に、「DB接続」フォームがロードされます。このフォームで、DBMSに接続するためのパラメーター、データベース名(「hashtopolis」など)、およびそれにアクセスするためのユーザー資格情報を入力する必要があります。 接続が正しく確立されると、次のフォームが開き、[続行]ボタンが1つ表示されます-クリックします。 すべてが正常であれば、次の「管理ユーザーの作成」フォームが開きます-ここでは、Hashtopolis Webアプリケーションの管理者の資格情報を示します。







「作成」ボタンをクリックした後、フォームが正しく処理されると、インストールの成功と推奨事項の確認とともにドキュメントが表示されます。





すべての手順が完了したら、Hashtopolis認証フォームをURL「http:// <server_ip> / hashtopolis /」でロードする必要があります。







次に(オプション)HTTPSの使用、セキュリティ証明書の接続を設定します-このステップは省略します。 Hashtopolisエージェントの構成に進みます。



エージェントのインストール



エージェントは「ハッシュクラッキング」タスクに直接関与します-「hashcat」または別のクラッカーのインスタンスがホストエージェントで起動されます。 Hashtopolisサーバーとエージェント間の対話は、HTTP / HTTPを介して行われます。



このエージェントは、Windows / Linux / MacOS Xを実行しているシステムにインストールできます。Hashtopolisの現在のバージョンでは、Pythonエージェントのみがサポートされています。



Hashtopolisエージェントの.Netバージョンはサポートされなくなりました



「hashcat」を使用して「ハッシュをクラック」するために使用するWindows 10ホストが既にありました。 したがって、何も変更せずに、Hashtopolisに接続するための既製の作業システムを使用することにしました。



Windowsシステムでは、最初にPython 3インタープリターをインストールする必要がありますが、「Python 3.xをPATHに追加」バーディーをインストールすることを忘れないでください(下の例を参照)







次に、Hashtopolisサーバーからhastopolis.zipアーカイブをダウンロードするか、アーカイブファイルをエージェントホストに配信する必要があります。



サーバーからエージェントファイルをダウンロードするには、[エージェント]ドロップダウンメニューから[新しいエージェント]をクリックします。 次に、ダウンロードボタンが含まれる「新しいエージェントの追加」セクション-「ダウンロード」に移動します。







また、「新しいエージェントの追加」セクションには、エージェントを接続するためのURLとバウチャーを作成するためのボタンが表示されます(「作成」をクリックする必要があります)。



この場合、アーカイブはディレクトリ「C:\ hashtopolis」に保存されました。これは、エージェントの作業ディレクトリになります。



エージェントでの作業(ログの表示、コピー/貼り付けなど)の便宜上、PowerShellセッションを使用します。 次のコマンドでエージェントを起動します。



 > python.exe .\hashtopolis.zip
      
      





エージェントは、-dオプションを使用してデバッグモードで開始されます。



 > python3.exe .\hashtopolis.zip -d
      
      





デバッグを無効にするには、文字列debug:false "を使用してconfig.json構成を編集します。



「-h」オプションを使用して、エージェントコマンドを実行するための追加の引数のヘルプを呼び出すことができます。



Hashtopolisエージェントコマンド
> python.exe。\ hashtopolis.zip -h

使用法:python3 hashtopolis.zip [-h] [--de-register] [--version]

[--number-only] [--disable-update] [--debug]

[--voucher VOUCHER] [--url URL]



Hashtopolisクライアントv0.4.0



オプションの引数:

-h、-helpこのヘルプメッセージを表示して終了

--de-registerクライアントは、サーバーから自動的に登録解除する必要があります

--versionバージョン情報を表示

--versionを使用する場合は--number-onlyのみ番号を表示

--disable-updateクライアントからの自動更新の取得を無効にします

サーバー

--debug、-dはデバッグ出力を強制します

--voucher VOUCHER自動的に登録するために使用するバウチャー

--url URL HashtopolisクライアントAPIへのURL



初期化後、エージェントはHashtopolisサーバーのURLを要求します(「新しいエージェントの追加」セクションからコピーできます):「HashtopolisインストールのAPIへのURLを入力してください:」



注:エージェントスクリプトは常にバックグラウンドで動作する必要があります。 サーバーからマルチキャストメッセージを受信するときにエージェントを実行するコンポーネントhashtopolis-runnerがあります。 RunnerはLinuxホストでのみ動作します。 詳細はこちら: github.com/s3inlc/hashtopolis-runner



URLが正しく、エージェントが接続できた場合、バウチャーを要求するメッセージが受信されます。「トークンが見つかりません。 エージェントを登録するためのバウチャーを入力してください: "



バウチャーコードが正しい場合、エージェントは確認を発行し、タスクのスタンバイモードに移行します。



 Successfully registered! Collecting agent data... Login successful! Hashtopolis Server version: 0.10.1 () Client is up-to-date! No task available!
      
      





表の「エージェント」セクションに、システムに関する情報(ホスト名、GPU / CPU、およびその他の情報)を含む新しいエージェントが追加されます。







C:\ hashtopolisディレクトリに、エージェント構成とclient.logログファイルを含むconfig.jsonファイルが作成されます。 github.com/s3inlc/hashtopolis-agent-pythonの指示に従って、追加のパラメーター(HTTPプロキシなど)を手動で追加できます。



エージェントのソースによって判断すると、ログローテーションまたは最大ログサイズに関する情報を見つけることができませんでした。端末からのすべての標準出力もファイルに書き込まれ、制限やチェックは見つかりませんでした。



すぐにHashtopolis Webインターフェイスのエージェント設定に移動することをお勧めします-ホスト名をクリックするだけです(上のスクリーンショットでは「DENIGMA」です)。 「秘密データを含む信頼エージェント」バーディーをインストールし、所有者(「所有者」)を示すことをお勧めします。







クラッカーバイナリのセットアップ



「クラッカー/クラッカーバイナリ」セクションには、「クラッカー」実行可能ファイルのパラメーターが表示されます。デフォルトでは、セクションには「hashcat 5.1.0」が含まれます。 特定のタスクに別のバージョンのhashcatを使用する必要がある場合は、[バージョン/バイナリの追加](リリースリスト: github.com/hashcat/hashcat/releases )をクリックします。 フォームで、すべてのフィールドに入力し、「バイナリを作成」をクリックします。







フォームの入力時には注意してください。特に、「ダウンロードURL」の「スペース」を避け、「バイナリベース名」フィールドに「hashcat」を指定してください。エージェントスクリプトは、実行可能ファイル名の欠落部分を補完します。 そこで、バージョン4.1.0の実行可能ファイルの追加セットを追加しました。 「名前」列のクラッカーの名前をクリックして変更できます。



この「セットアップ」の結果として、新しいタスク(「タスク/新しいタスク」)を作成するときに、hashcatバージョンを選択することが可能になります。







「クラッカー」セクションでは、別のタイプのクラッカーを追加することもできます一般的なクラッカーの操作については、こちらをご覧ください



エージェントホストのローカル「クラッカー」ディレクトリでタスクを開始すると、「ダウンロードURL」で指定された7zアーカイブがクラッカーID番号のフォルダーに解凍されます。





このバージョンのクラッカーが以前に「インストール」されていた場合、アーカイブは再度ダウンロードされません。



ハッシュをクラックするタスクを作成する



エージェントを設定しましたので、チェックアウトを待ちきれません。 「ハッシュのクラッキング」を開始するには、ハッシュのリスト(または「ハッシュリスト」)を作成し、タスクで指定する必要があります。 Hashtopolis Webインターフェースでリストを作成するには、「リスト」をクリックし、ドロップダウンメニューから「新しいハッシュリスト」を選択します。 私たちのプロジェクトでは、定期的にNTLM / NetNTLMハッシュに遭遇します-それらで練習します。 オンラインサービスを使用して、NTLMハッシュを生成します。 次に、リストの残りのパラメーターを設定し、「ハッシュリストの作成」をクリックします。







重要な点は、すべての「クラックされた/クラックされていない」ハッシュが作成されたリストに表示されることです。 すべてのハッシュデータはリストに関連付けられ、タスクはリストに関連付けられています。 したがって、ハッシュリストを削除するときは注意してください。 また、何らかの理由でアプリケーションモジュールの動作が停止した場合、たとえば、通知が割り当てられたタスクを削除した後に「notifications.php」モジュールがオフになった場合、「NotificationSetting」テーブルのエントリをクリックする必要がありました



次に、辞書を追加する必要があります。これは、「辞書」選択(「hashcat」のキー「-a0」)でハッシュを分割するためです。 [ファイル]セクションに移動し([ワードリスト]タブがアクティブになります)、[ファイルの追加]ボタンをクリックしてローカルファイルを選択し、[ファイルのアップロード]をクリックします。 URLによるダウンロードも使用できます。たとえば、 「既知の」リポジトリから辞書をダウンロードします







これで、エージェントのタスクを開始できます。 Hashtopolisメインメニューから、[タスク/新しいタスク]を選択します。 次に、フォームに入力します。



  1. 「名前」パラメータにタスクの名前を入力します
  2. 「Haslist」パラメーターでハッシュリストを選択します
  3. 右側の「ワードリスト」のリストから辞書にマークを付けます-辞書の名前は、「コマンドライン」フィールドで自動的に置換されます:「.. \ path \ to \ file \%filename%」の形式で辞書へのパスを指定します
  4. [コマンドライン]フィールドに、hashcat起動パラメーターを入力します(例: "-a0")
  5. 優先度は、多くのタスクがある場合に関連します。
  6. メモには「タスクメモ」が使用されますが、Hashtopolis以外では利用できません。
  7. タスクのリストでマークするタスクの色を選択できます(メニュー「タスク/タスクの表示」)


残りのパラメーターはデフォルトのままにして、「タスクの作成」をクリックします。 その後、新しいタスクがタスクのリストに表示されます:







表からわかるように、エージェントは「NTLM_test_crack」タスクに割り当てられていません。 「割り当て:」パラメータの「エージェントの詳細」メニューからエージェントを割り当てるか、タスクのプロパティでリストからエージェントを選択し、「割り当て」ボタンをクリックします。







この直後に、エージェントは「移動」を開始します-指示が送信されます:





同時に、GPUの準備段階、選択プロセス、システムパフォーマンス(「H / s」など)に関する情報がコンソールに表示されます。



タスクを起動して実行すると、「ハッシュリスト」のステータスが更新されます。 選択したパスワードは、「タスク」テーブルまたは「ハッシュの詳細」セクションの「クラック:」の反対の数字をクリックして表示できます。







タスクの実行中にエージェントでエラーが発生した場合、このエージェントのステータスが変更され、手動でアクティブ化する必要があります。 エージェントを再度「アクティブ化」するには、エージェント設定の「Activity」パラメータの前に鳥を置く必要があります。 一時停止ステータスは次のようになります。







エラーによるエージェントの停止を防ぐには、「Cracker errors」パラメーターを「Keep agent running」オプションのいずれかに変更する必要があります(エージェントは動作しますが、エラーはログに記録されるか拒否されます)。







しっぽ



ご清聴ありがとうございました! 次のパートでは、Hashtopolisでの通知の設定について説明します。



All Articles