GPG暗号化ファイルをバイナリ実行可能ファイルのように見せる

GPG暗号化ファイルをバイナリ実行可能ファイルのように見せる

奇妙な問題があります。archive.tar.gzプレーンテキストファイルで埋められたtarファイルがあります。その後、アーカイブはarchive.tgz.gpg合計archive.tgz.gpg<100KBでGPG暗号化されます。

archive.tgz.gpgこれでLinuxバイナリのように見え、ほとんどのUNIX標準ユーティリティを使用して難読化を解除したいと思います。私は(おそらく)そうではないことを知っています働くバイナリ実行可能ファイルとしては問題ありません。しかし、一見すると、破損したバイナリ実行可能ファイルのように見えます。

cat私が得た最も遠いのは、ファイルの種類が正しく返されないようにヘッダーを変更しようとしddましたが、fileオンラインでこれを行うための追加情報を見つけることができませんでした。

誰もが私を正しい方向に案内してくれたらとても感謝します。ありがとうございます!

ベストアンサー1

ジョブ実行可能ファイルにペイロードを完全に含めることができます。

echo "I am your encrypted message." > message.txt
gpg2 --symmetric message.txt
ld -r -b binary -o message.o message.txt.gpg
gcc -o unsuspicious unsuspicious.c message.o

すべてのプログラムが含まれていますunsuspicious.c

#include <stdio.h>
int main(int argc, char** argv) {
    printf("Hi. I am a totally unsuspicious executable.\n");
}

この手法を使用すると、ペイロードはバイナリの.dataセクションにあります。これを検索するには、完全なデータセクションを抽出します。

objcopy --dump-section .data=data.bin unsuspicious

他のいくつかのデータは104バイトのペイロードの前にあります。との間の正確な違いを確認しましたが、nm unsuspicious私の場合は16バイトでした。これを知ると、ペイロードを検索できます。__data_start_binary_message_txt_gpg_start

dd if=data.bin skip=16 bs=1 count=104 of=message.txt.gpg

これが目標の効率的な実装であるかどうかは、「標準ユーティリティ」を検討しているかどうかnmによって異なります。もちろん、要求がある場合にのみペイロードのみを印刷するように、プログラム自体にいくつかのロジックをいつでも追加できます。objcopydd

おすすめ記事