gRPCサービスのブラインド列挙 ノート

gRPCサービスのブラインド列挙

ドキュメントが不十分で難読化されたSDKを持つブラックボックスサービスが、grpc-scanを作成するきっかけとなりました。このツールは、標準的な発見方法が利用できないため、無効なリクエストによって発生するエラーメッセージのバリエーションを利用して、gRPCサービスの列挙を自動化します。gRPCのバイナリ形式と大文字小文字を区別する要件により、手動での列挙は困難であり、正確なサービス名とメソッド名、および適切にシリアライズされたメッセージが必要です。このツールは、gRPCプロトコルをフィンガープリントし、観察されたパターンに基づいて可能性の高いサービス名とメソッド名の組み合わせを生成します。また、異なるgRPC実装によって返されるエラーコードの微妙な違いを識別します。このツールは、サービスとの複数の接続を確立することで、スキャン速度を向上させるためにリクエストを多重化します。ペンテストでは、移行によるサービスの拡散、一貫性のない認証によるメソッドの増加、および内部サービスの予期せぬ公開がしばしば明らかになります。古いサービスは、新しい実装に存在するセキュリティ制御が欠けていることが多く、脆弱性につながります。組織の歴史も、パッケージ名前空間の発見を通じて明らかになり、さまざまなセキュリティの前提が露呈します。制限事項としては、サービス固有のprotobuf構造を自動的に作成できないこと、および現在のところ単項呼び出しに焦点を当てていることが挙げられます。