Many Online Services and Websites Affected by an AWS Outage

    Using Syscall() for Obfuscation/Fileless Activity

    Published: 2025-10-20. Last Updated: 2025-10-20 06:33:55 UTC
    by Xavier Mertens (Version: 1)
    0 comment(s)

    I found another piece of malware this weekend. This one looks more like a proof-of-concept because the second-stage payload is really "simple", but it attracted my attention because it uses a nice technique to obfuscate the code.

    The dropper is a simple Python script (SHA256:e6f7afb92153561ff6c584fee1b04fb132ba984e8a28ca63708a88ebad15b939) with a low VT score of 4/62[1]. The script contains an embedded Base64 payload that, once decoded, will be executed. This second stage is an ELF file, indicating the script targets a Linux system.

    What attracted my attention is the direct use of syscall()[2] instead of classic functions:

    import ctypes
    libc = ctypes.CDLL(None)
    syscall = libc.syscall
    [...]
    fd = syscall(319, "", 1)
    os.write(fd, content)

    A full list of available syscalls is documented by many websites[3]. The syscall 319 is "memfd_create" and, as the name suggests, it allows creating a file descriptor in memory (read: without touching the filesystem). 

    The Base64 payload is not very interesting, it's an ELF file (SHA256:52fc723f7e0c4202c97ac5bc2add2d1d3daa5c3f84f3d459a6a005a3ae380119) that will just encrypt files using a 1-byte XOR key:

    [1] https://www.virustotal.com/gui/file/e6f7afb92153561ff6c584fee1b04fb132ba984e8a28ca63708a88ebad15b939/detection
    [2] https://man7.org/linux/man-pages/man2/syscalls.2.html
    [3] https://www.chromium.org/chromium-os/developer-library/reference/linux-constants/syscalls/

    Xavier Mertens (@xme)
    Xameco
    Senior ISC Handler - Freelance Cyber Security Consultant
    PGP Key

    0 comment(s)

      Comments


      Diary Archives