奇妙な問題があります。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
によって異なります。もちろん、要求がある場合にのみペイロードのみを印刷するように、プログラム自体にいくつかのロジックをいつでも追加できます。objcopy
dd