Open1

クロスコンパイル

memomemo

pocをダウンロードして、クロスコンパイルしていく。

┌──(kali㉿kali)-[~/offsec/work/tmp]
└─$ searchsploit "sync breeze enterprise 10.0.28"
kali@kali:~$ searchsploit -m 42341

winodws環境でコンパイルされることを期待されていることがヘッダから分かる。

┌──(kali㉿kali)-[~/offsec/work/tmp]
└─$ cat 42341.c 
/*
Sync Breeze Enterprise BOF - Ivan Ivanovic Ivanov Иван-дурак
недействительный 31337 Team
*/

#define _WINSOCK_DEPRECATED_NO_WARNINGS
#define DEFAULT_BUFLEN 512

#include <inttypes.h>
#include <stdio.h>
#include <winsock2.h>
#include <windows.h>

人気の高い mingw-w64 クロスコンパイラを使用

kali@kali:~$ sudo apt install mingw-w64
kali@kali:~$ i686-w64-mingw32-gcc 42341.c -o syncbreeze_exploit.exe
/usr/bin/i686-w64-mingw32-ld: /tmp/cchs0xza.o:42341.c:(.text+0x97): undefined reference to `_imp__WSAStartup@8'
/usr/bin/i686-w64-mingw32-ld: /tmp/cchs0xza.o:42341.c:(.text+0xa5): undefined reference to `_imp__WSAGetLastError@0'
/usr/bin/i686-w64-mingw32-ld: /tmp/cchs0xza.o:42341.c:(.text+0xe9): undefined reference to `_imp__socket@12'
/usr/bin/i686-w64-mingw32-ld: /tmp/cchs0xza.o:42341.c:(.text+0xfc): undefined reference to `_imp__WSAGetLastError@0'
/usr/bin/i686-w64-mingw32-ld: /tmp/cchs0xza.o:42341.c:(.text+0x126): undefined reference to `_imp__inet_addr@4'
/usr/bin/i686-w64-mingw32-ld: /tmp/cchs0xza.o:42341.c:(.text+0x146): undefined reference to `_imp__htons@4'
/usr/bin/i686-w64-mingw32-ld: /tmp/cchs0xza.o:42341.c:(.text+0x16f): undefined reference to `_imp__connect@12'
/usr/bin/i686-w64-mingw32-ld: /tmp/cchs0xza.o:42341.c:(.text+0x1b8): undefined reference to `_imp__send@16'
/usr/bin/i686-w64-mingw32-ld: /tmp/cchs0xza.o:42341.c:(.text+0x1eb): undefined reference to `_imp__closesocket@4'
collect2: error: ld returned 1 exit status

コンパイルプロセス中に何らかの問題が発生しました。

「WSAStartup」関連の最初のエラーをGoogleで検索すると、winsock.hにある関数であることが分かります。

さらに調べてみると、これらのエラーはリンカーがwinsockライブラリを見つけられない場合に発生し、i686-w64-mingw32-gccコマンドに
-lws2_32パラメータを追加することで問題が解決するはずです。

┌──(kali㉿kali)-[~/offsec/work/tmp]
└─$ i686-w64-mingw32-gcc 42341.c -o syncbreeze.exe -lws2_32

mingw32はコンパイル・エラーを発生させることなく実行ファイルを生成した。
lオプションを使用すると、mingw-w64にws2_32 DLLを検索し、静的リンクによって最終的な実行ファイルにインクルードするよう指示できる。