Mingw-w64

Cross-compiler. Useful to compile exploit code.

Installation

sudo apt install mingw-w64

Compilation

💡 Command to use is dependent on the target’s architecture. Issue command “uname -m” on the target.

The prefix i686=32-bit x86_64=64-bit shows what kind of binaries the toolchain builds. The suffix shows what OS the toolchain is built for. If you need to build 32-bit binaries on Windows, it is recommended to use the i686…win32 package.

Compile C code (.c)

ls -la /usr/bin/*mingw*-gcc

Compile C code into Windows PE file

i686-w64-mingw32-gcc exploit.c -o exploit.exe
x86_64-w64-mingw32-gcc exploit.c -o exploit.exe

Compile C++ code (.cpp)

ls -la /usr/bin/*mingw*-g++
i686-w64-mingw32-g++ exploit.cpp -o exploit.exe
x86_64-w64-mingw32-g++ exploit.cpp -o exploit.exe

Execute the compiled exploit

See Wine.

wine exploit.exe

Missing Libraries

When these libraries are part of the exploit code.

Windows.h

Replace “Windows.h” by “windows.h” in the code and retry compilation.

TLHelp32.h

wget https://raw.githubusercontent.com/Alexpux/mingw-w64/master/mingw-w64-headers/include/tlhelp32.h

winsock.h

💡 Look for #pragma in .c file, it should contain the library to add! “ws2_32” is -lws2_32

grep winsock exploit.c
i686-w64-mingw32-gcc exploit.c -o exploit.exe -lws2_32

stdafx.h

cp /home/kali/lab/impacket-share/stdafx.h.gch .

Or:

nano stdafx.h
#include <string>
#include <stdio.h>
i686-w64-mingw32-g++ stdafx.h -o stdafx.h.gch

Then compile exploit as usual.

i686-w64-mingw32-g++ privesc.cpp -o privesc.exe