Overview
Proone uses the GNU Autotools build system (autoconf/automake) to compile the worm and its associated tools. The build process generates executables for the host platform and can be configured for cross-compilation to target embedded devices.Prerequisites
Required Dependencies
Before building Proone, ensure the following libraries and tools are installed:Core Libraries
- pthread - POSIX threads library for multithreading support
- rt - Real-time extensions (provides
shm_open) - zlib - Compression library for binary archive
- mbedtls (mbedcrypto, mbedx509, mbedtls) - TLS/SSL library for encrypted communications
- libssh2 - SSH2 protocol library for SSH brute force vector
- pthsem - GNU Portable Threads with semaphore support for cooperative multitasking
Optional Dependencies (for Maintenance Tools)
Required only when building with--enable-mttools:
- libyaml - YAML parser for configuration files
- mariadb-connector-c - MariaDB client library for hostinfo daemon
- mbedtls with threading support - mbedtls must be compiled with
MBEDTLS_THREADING_Cenabled
Build Tools
- autoconf - GNU Autoconf for configuration script generation
- automake - GNU Automake for Makefile generation
- gcc - GNU C compiler
- xxd - Hexdump tool (part of vim-common)
- sed - Stream editor for text processing
Build Process
Step 1: Bootstrap the Build System
After cloning the repository or making changes to.ac or .am files, run the bootstrap script to initialize autotools:
aclocal- Generate aclocal.m4autoheader- Generate config header templateautomake --add-missing --copy- Create Makefile templatesautoconf- Generate configure script
Step 2: Configure the Build
Run the configure script to detect system capabilities and set up the build:- Detect the C compiler and build tools
- Check for required libraries
- Generate
src/config_gen.hwith build configuration - Create Makefiles for building
Step 3: Compile
Build the project using make:- proone.bin - Core worm executable (ELF part only, not runnable standalone)
- proone - Complete executable with DVault appended
- Build tools (when
--enable-mttoolsis used)
Step 4: Build Data Vault and Credential Dictionary
Generate the required binary data files:- CNC TXT record domains
- Credential dictionary for brute force attacks
- Network targeting configuration
Build Outputs
Executables
After building, executables are located in thesrc/ directory:
Core Executable
src/proone.bin- ELF executable (requires DVault and BA to run)src/proone- Complete executable with DVault
Testing Tools
proone-recon- Standalone recon worker for testingproone-resolv- Standalone DNS resolver testing toolproone-htbthost- Standalone heartbeat worker for testingproone-bne- Standalone break-and-enter toolproone-stress- CPU stress testing toolproone-test_proto- Protocol test suiteproone-test_util- Utility function test suite
Build Tools
proone-pack- Binary archive build toolproone-mkcdict- Credential dictionary builderproone-mkdvault- Data vault builderproone-list-arch- Architecture listing toolproone-ipaddr-arr- IP address to C array converter
Maintenance Tools (with —enable-mttools)
proone-hostinfod- Hostinfo daemon (authoritative heartbeat server)proone-htbtclient- Heartbeat client for instance maintenance
Basic Build Example
For a standard debug build:Production Build Example
For an optimized production build with static linking:Cleaning Up
To clean build artifacts:Troubleshooting
Library Not Found Errors
If configure fails with library errors like “mbedtls not found” or “pthsem not found”:- Install the missing library through your package manager
- If installed in a non-standard location, set
LDFLAGSandCPPFLAGS:
Threading Support Error
When building maintenance tools, if you encounter “mbedtls not compiled with threading support”:- Rebuild mbedtls with threading enabled
- Ensure
MBEDTLS_THREADING_Cis defined in mbedtls config
Missing Build Tools
If configure reports missingxxd or sed:
Next Steps
- Review Configuration Options for build customization
- See Cross-Compilation for building multi-architecture releases
