aboutsummaryrefslogtreecommitdiff
path: root/src/proone.c
AgeCommit message (Collapse)Author
2021-11-06Add more callbacks for fork() event, doc progressDavid Timber
* Add fork.prepare(), fork.parent() and fork.child() to match with pthread_atfork(), which makes more sense * Code documentation progress
2021-10-30Code documentation and bug fixes ...David Timber
* Add convenience function prne_sfree_str() * Use prne_sfree_str() to scrub off sensitive data * Making the brute force login vector optional BNE param cred_dict can be null * Use O_EXCL when creating temporary files * Fix bug where bne_cb_uptime() returns the up time of the child process, not the parent
2021-08-31MIT LicenseDavid Timber
2021-08-16Protocol change: change hostinfo uptime ...David Timber
* Change hostinfo parent_uptime and child_uptime to uint32_t (138 years is a long time)
2021-08-13Impl bne ...David Timber
* Add upload lock mechanism to prevent multiple instances trying to infect the same host simultaneously * Add "upload guard". The upload guard cleans up the lock file and the upload directory in the event of upload failure * Fix bug in bne_vssh_flush_f() * prne_strzero() accepts NULL * Fix Proone: missing prne_dvault_reset() calls
2021-08-10Impl M2M binary update ...David Timber
* Use getopt in proone-bne * Call pth_yield() where necessary * htbt: truncate downloaded binary if actual size of data transfered is less than alloc_len * prne_rcb_param.self is not optional as proone-bne uses nybin * Add --vercmp option for proone-bne to test M2M bin update * Refactor proone-htbtclient * Protocol change: prne_htbt_bin_meta.alloc_len is now size_t * Add convenience functions: prne_realloc_str(), prne_redup_str()
2021-08-09Protocol and build system change ...David Timber
* Use autoheader * Add --enable-minmem * Add OS code. Bin archive and protocol changed accordingly * Add instance flags in hostinfo frame. Bitfield util added for this * Add org_id in hostinfo for lineage record * SQL schema change: store integer value of hostinfo arch and os * Remove config.c * prne_index_nybin() now sets errno * Instance ids are now preserved for lineage record * Proone: remove arguments after init * Fix bug in prne_htbt_ser_bin_meta(): alloc_len is not checked
2021-08-06htbt and protocol overhaul ...David Timber
* htbt overhaul * Abandon async slv io. slv io is now synchronous * htbt_do_cmd() * w/ detach flag: set up closed pipes for stdio * Create new pg for child and kill the pg on error * Do waitpid() w/ timeout * Wait for child spawn w/ timeout * Always reap child * Add fork cb for clean up code(to unmask signals, deinit libs) * Protocol overhaul * Use stdio frames to transfer binary data for PRNE_HTBT_OP_UP_BIN and PRNE_HTBT_OP_RUN_BIN op * bin_meta bin_size -> alloc_len. This is an optional field now * Fix protocol * detach flag of cmd_head not being (de)serialised * cmd_head (d)ser funcs not setting actual correctly * Proone: call setsid() on daemonisation * Fix compilation error caused by missing <errno.h>
2021-07-25Impl htbt M2M binary update and bug fixes ...David Timber
* Change signature of tmpfile() cb * Add PRNE_DATA_KEY_VER_MAT * Add prne_try_alloc_iobuf() * Fix htbt: don't run cncp when both resolv and cnc_txtrec are not passed * Impl upbin cb on proone-bne * Fix proone-htbtclient: content of status frame was discarded * htbt is now responsible for setting FD_CLOEXEC on temp files * Changes in mttools for valgrind run * Add proone-test_iobuf * Fix event leak in resolv * src/test-resolv.sh: run proone-resolv on valgrind * Add prne_cmp_uuid_asc() and prne_cmp_uuid_desc() for version matrix *
2021-07-22Fix proone ...David Timber
* Fix missing feature: renaming downloaded exec to the value of PRNE_DATA_KEY_EXEC_NAME
2021-07-22Impl PRNE_HTBT_OP_RCB ...David Timber
* Parameterize prne_start_bin_rcb() args * Change value of PRNE_ARCH_NONE to 0 to use it over the wire (problem arises deserialising) * tostr() and fstr() functions set errno to EINVAL * Run bne without binary archive to support same-arch infection
2021-07-21Impl proone-htbtclient upbin, bug fixes ...David Timber
* Add prne_start_bin_rcb_compat() * PRNE_HTBT_OP_NY_BIN -> PRNE_HTBT_OP_UP_BIN. "nybin" is now the name of the file format * htbt * Fix broken hover redirection (HTBT_LMK_HOVER removed) * HTBT_MAIN_REQ_Q_SIZE * Impl PRNE_HTBT_OP_NOOP response * Fix PRNE_HTBT_OP_SOLICIT is always sent with id 1 * proone * Fix bugs caused by not scrubbing the shared global memory * Fix exec() fail when upbin request with args * Removed do_recombination() as it's not efficient. Now the authoritive end has to do the recombination * PRNE_HTBT_OP_RCB, PRNE_HTBT_STATUS_SUB reserved for future impl
2021-07-07Refactor: impl prne_mbedtls_verify_alp()David Timber
2021-04-26Tweak and bug fixDavid Timber
* Increase socket operation timeout of htbt and resolv * htbt: use of term "jitter" * htbt: Fix bug where debug print is not suppresses when `PRNE_VERBOSE < PRNE_VL_DBG0` * Fix crash bug caused by SIGPIPE * Proone: `sleep(1)` when fork fails
2020-11-15Fix improper ssl client config init in prooneDavid Timber
* Fix typo in htbt.c
2020-09-28Proone: die when pth_attr_of() failsDavid Timber
2020-09-27Proone ignores SIGTERM as `killall -TERM` killsDavid Timber
both process instantly. Use `killall -INT` to signal normal exit.
2020-09-27* Disable armv7, aarch64, x86_64 targetDavid Timber
* Apply recon and bne to proone * Add callback contexts on htbt and bne * Fix mem leak in bne_sh_cleanup_upload() * Use prne_static_assert() instead of _Static_assert() * Use prne_free_worker() rather than calling free_ctx() * Add prne_eq_ipaddr() * bne * Add prne_bne_result::ny_instance to impl infect_cnt * Don't delete tmp upload dir after successful bne_sh_run_exec() so that proone can make tmp files * Silently ignore PRNE_BNE_V_HTBT if htbt_ssl_conf is not set * Add prne_bne_get_subject() * htbt * Fix crash bug when running without resolv * proone: set pth priority
2020-09-22* Add proone exit codes as macro defsDavid Timber
* Lock file acquisition failure is not an error
2020-09-22* Impl bneDavid Timber
* Add base64 upload method * Remove pollin_f() * Caller should terminate cmdline * Newline style detection for \r\n, \r\0, \r or \n * Issue "enable", "system" and "shell" on set up * * Rename prne_strnstr() -> prne_memmem() * Added prne_rebuild_str() for efficiency * Daemonise proone so that bne can clean up after upload
2020-09-18* Impl: bneDavid Timber
* Add prne_index_nybin()
2020-09-15* Code consistency - take *_param_t as pointerDavid Timber
* Fix *_param_t leak and memory error
2020-09-14* Add "--enable-static" configure optionDavid Timber
* Change "PRNE_DEBUG" macro use * Add "PRNE_VERBOSE" * Impl "recon" * Add "inet.h" for Internet Protocol stuff * Changes regarding "PRNE_RND_WELL512_SEEDLEN" * Add prne_own_realloc() for objects with multiple array memebers * Add prne_add_timespec()
2020-09-08* Fix bug in pth_poll: wrong use of FD_SET()David Timber
causing undefined behaviour * Fix bug in proone: loading ns pool from dvault for resolv * Fix bug in htbt: improper handling of stream in htbt_relay_child() * Switch back to _POSIX_C_SOURCE=200112L
2020-09-08* Remove proone-unpackDavid Timber
* self test is done by proone-pack * Impl: htbt@proone * htbt: allocate large buffer first by deault * htbt: use 0600 for NY_BIN as the image is not an executable * pack: return error when z_stream is cut short * proone-pack: impl "nybin" file format
2020-09-07* Impl: proone-packDavid Timber
* Impl: host_cred (base64)
2020-09-04Don't initialise static variables to zero.David Timber
2020-09-03* [proone] prne_s_g null checkDavid Timber
2020-09-03* [proone] Use hashed value for shared global fileDavid Timber
name * [htbt] Verify ALPN * [htbt] Bug fixes regarding poll() * [htbt] Run w/o resolv
2020-08-29* _POSIX_C_SOURCE=199506LDavid Timber
* Add proone-htbthost * Add prne_iobuf, use it in resolv, htbt * memzero() -> prne_memzero() now as a function * Add prne_mbedtls_pth_handle() * Protocol changes * Remove prne_unint_*() * Add src/proone_conf.skel
2020-08-24* htbt checkpointDavid Timber
* Change PRNE_BUILD_ENTROPY to uint8_t array * endian.h problem * Remove "-I." CFLAG added by Automake () * Moved endian conversion macros to endian.h * Moved DNS server config from config.h to resolv.h to reduce compile time * Refactor resolv_ensure_act_dns_fd() to reduce binary size
2020-08-20Progress ...David Timber
* Move DVault out of executable. Dynamically load it on startup * Improved testing scheme * Tidy up prne_*assert* macro series * Protocol: store host credentials in base64 string. No mask * Use the lock shm as a shared_global so the stats can persist * mmap() the executable read-only for later use
2020-08-17Employ pthsem ...David Timber
* Use uint8_t array for hardcoded binary data * Add proone-ipaddr-arr to hardcode DoT servers * Convert X509 data * Brought back M68k and ARC archs just in case * Add CLOCK_REALTIME in prne_mbedtls_entropy_proc_src_f for more entropy * Remove installation of signal handlers. Use sigwait() instead * Bugfix: prne_rnd_anum_str() returned null characters * Add prne_dbgpf() and prne_dbgperr() * prne_assert(): put errno into a register so it's visible in the core dump
2020-08-11Build system change, bugfix ...David Timber
* Workaround for a bug where getrandom() call block within mbedtls * Remove use of undocumented autoconf feature: pkg-config * Remove proone-arch-test
2020-03-03htbt protocol prototype ...David Timber
* gen `PRNE_BUILD_ENTROPY` on configure * `PRNE_PROG_VER` bin str -> arr str * added null checked str func `prne_nstreq()`, `prne_nstrlen()` * preserve `errno` in signal handlers
2020-01-19bin pack redesign. resolv bug fixDavid Timber
2020-01-15unexpandDavid Timber
2020-01-14impl resolving CNAMEd records. `memzero()` macro.David Timber
2020-01-11staged resolv_workerDavid Timber
* replaced RNG from `rnd` to `mbedtls_ctr_drbg` * use of `uint_fastN_t` where appropriate * heartbeat protocol draft * improved worker scheduling mech
2020-01-04musl + mbedtls!David Timber
2020-01-03checkpointDavid Timber
2020-01-01checkpointDavid Timber
2020-01-01checkpointDavid Timber
2019-12-31checkpointDavid Timber
2019-12-29checkpointDavid Timber
2019-12-27initial commitDavid Timber