_ _ _ ____ _
| | | | __ _ ___| | _| __ ) ___ | |_
| |_| |/ _` |/ __| |/ / _ \ / _ \| __| By: Morpheuslord
| _ | (_| | (__| <| |_) | (_) | |_ AI used: Meta-LLama2
|_| |_|\__,_|\___|_|\_\____/ \___/ \__|
HackBotへようこそ。これは、サイバーセキュリティ関連の疑問に対して役立つ正確な回答を提供し、コード分析やスキャン分析も行える、AI搭載のサイバーセキュリティチャットボットです。セキュリティ研究者、倫理的ハッカー、あるいは単にサイバーセキュリティに興味がある方など、HackBotは必要な情報を見つけるお手伝いをします。
HackBotは、"LlamaCpp" ライブラリを介して強力な言語モデル Meta-LLama2 を利用しています。これにより、HackBotは一貫性のある関連性の高い回答を提供できます。最良の結果を得るために、クエリは英語で行い、提供されるガイドラインに従ってください。
.envファイルのAI_OPTIONセクションを変更してチャットボットに接続できます。Runpodを使用するにはRUNPOD、ローカルLlamaデプロイメントにはLOCALLLAMAを設定してください。 & RUNPODLOCALLLAMARUNPOD IDとRUNPOD API KEYが設定されていることを確認してください。LLama2は現在利用可能な最良のオフラインかつ無料のオプションの1つです。現在改良中であり、AIにサイバーセキュリティの視点をより適切に組み込むプロンプトに取り組んでいます。 @thisserand 氏と彼の llama2_local リポジトリ、そして彼のYT動画 YT_Video に感謝します。これらは素晴らしいリソースでした。正直なところ、llama2のコードは95%が彼のもので、私はコードを流用してFlask API機能を追加しただけです。
AIのオフラインおよびコード外でのテストの精度は素晴らしく、openaiやbardと同等でしたが、コード内ではプロンプトなどの理由でいくつか問題が発生していました。修正に努めます。
速度はシステムとGPUおよびCPUの構成に依存します。現在は TheBloke/Llama-2-7B-Chat-GGML モデルを使用しており、portscanner および dnsrecon ファイルで変更可能です。
当面、llamaのコードとスキャンは別々に処理されます。いくつかのテストの結果、llamaは私が意図したように動作するために少しトレーニングが必要であることがわかりました。そのため、時間がかかります。これを行う方法についての提案は、このリポジトリのディスカッションに追加できます ディスカッションリンク。現在のところ、出力はすべてのデータを分割したリストではなく、AIによって発見された脆弱性や問題の説明になります。
モデル使用のプロンプトは次のようになります:
[INST] <<SYS>> {user_instruction}<</SYS>> NMAP Data to be analyzed: {user_message} [/INST]
指示は次のようになります:
Do a NMAP scan analysis on the provided NMAP scan information. The NMAP output must return in a asked format accorging to the provided output format. The data must be accurate in regards towards a pentest report.
The data must follow the following rules:
1) The NMAP scans must be done from a pentester point of view
2) The final output must be minimal according to the format given.
3) The final output must be kept to a minimal.
4) If a value not found in the scan just mention an empty string.
5) Analyze everything even the smallest of data.
6) Completely analyze the data provided and give a confirm answer using the output format.
7) mention all the data you found in the output format provided so that regex can be used on it.
8) avoid unnecessary explaination.
9) the critical score must be calculated based on the CVE if present or by the nature of the services open
10) the os information must contain the OS used my the target.
11) the open ports must include all the open ports listed in the data[tcp] and varifying if it by checking its states value. you should not negect even one open port.
12) the vulnerable services can be determined via speculation of the service nature or by analyzing the CVE's found.
The output format:
critical score:
- Give info on the criticality
"os information":
- List out the OS information
"open ports and services":
- List open ports
- List open ports services
"vulnerable service":
- Based on CVEs or nature of the ports opened list the vulnerable services
"found cve":
- List the CVE's found and list the main issues.
指示セットとプロンプトで提供されたデータを使用して、llama AIが出力を生成します。
ほとんどの使用では、runpodサーバーレスエンドポイントデプロイメントのllamaを作成することをお勧めします。このチュートリアルを参照してください:tutorial。より良い使用のためにチュートリアルに従ってください。



インストールを進める前に、次の前提条件を満たしていることを確認してください:
pip3 パッケージマネージャーVisual Studio Code - このリンクの手順に従ってください llama-cpp-prereq-install-instructionscmakegit clone https://github.com/morpheuslord/hackbot.git
cd hackbot
pip3 install -r requirements.txt
python3 hackbot.py
HackBotを初めて実行すると、チャットボットに必要なAIモデルがチェックされます。モデルが存在しない場合、自動的にダウンロードされ、"llama-2-7b-chat.ggmlv3.q4_0.bin" としてプロジェクトディレクトリに保存されます。
HackBotとの会話を開始するには、次のコマンドを実行します:
.env ファイルは次のようになっている必要があります:
RUNPOD_ENDPOINT_ID = ""
RUNPOD_API_KEY = ""
AI_OPTION = "LLAMALOCAL"
それが完了したら、これを実行します。
python hackbot.py
.env ファイルは次のようになっている必要があります:
RUNPOD_ENDPOINT_ID = "<<サーバーレスエンドポイントID>>"
RUNPOD_API_KEY = "<<RUNPOD APIキー>>"
AI_OPTION = "RUNPOD"
それが完了したら、これを実行します。
python3 hackbot.py
HackBotはバナーを表示し、入力を受け付けます。サイバーセキュリティ関連の質問をすると、HackBotが情報を提供する回答を返します。チャットを終了するには、入力プロンプトに "quit_bot" と入力します。
以下は使用できる追加コマンドです:
clear_screen: コンソール画面をクリアして読みやすくします。quit_bot: チャットアプリケーションを終了します。bot_banner: デフォルトのボットバナーを表示します。contact_dev: 連絡先情報を提供します。save_chat: 現在のセッションのやり取りを保存します。vuln_analysis: スキャンデータまたはログファイルを使用して脆弱性分析を行います。static_code_analysis: スキャンデータまたはログファイルを使用して静的コード分析を行います。注意: よりchatGPTのような体験を提供するために、さらに多くのアドオンとコマンドに取り組んでいます。
ご注意: HackBotの応答はMeta-LLama2 AIモデルに基づいており、その精度は提供されたクエリとデータの品質に依存します。
また、より専門的なレベルでハッカー向けに正確に調整されるようにAIを訓練する作業にも取り組んでいます。
HackBotの機能と精度を向上させるためのコントリビューションを歓迎します。問題が発生した場合や機能強化の提案がある場合は、遠慮なくIssueを開くか、プルリクエストを送信してください。コントリビュートするには以下の手順に従ってください:
main ブランチに対してプルリクエストを開きます。クリーンなコミット履歴を維持し、プロジェクトのコーディングガイドラインに従ってください。
テキスト生成モデルのトレーニングに関する知識がある方で、コードの改善に協力していただける方がいらっしゃいましたら歓迎します。AIトレーニング部分については、データセットとトレーニング用の動作コードを準備しましたが、トレーニング部分で問題に直面しており、協力をいただけるとありがたいです。 データセットは以下で確認できます:
GitHub版のデータセットはOpenAIトレーニング用で、もう一つはMetaのLlama2-7b用です。データセットの目的は、CVEデータをより適切に扱えるAIモデルを生成する可能性を試すことです。データセットが不足していると感じた場合は、自由に修正し、ご意見をお聞かせください。
HackBotに関するご質問、フィードバック、お問い合わせは、プロジェクト管理者までお気軽にご連絡ください: