Linux Analysis Report
na.elf

Overview

General Information

Sample name: na.elf
Analysis ID: 1592116
MD5: 74048fd1dcab9713c0adbf1fa54da51a
SHA1: 976964b85dbfa76aedfc33a77803ff75f8d5cb14
SHA256: 707c1dfeef4d2f93cc1e2e71efa021015a43726bf0ce551974e9d1caff75d2ec
Tags: elfuser-abuse_ch
Infos:

Detection

Prometei
Score: 96
Range: 0 - 100
Whitelisted: false

Signatures

Malicious sample detected (through community Yara rule)
Multi AV Scanner detection for submitted file
Suricata IDS alerts for network traffic
Yara detected Prometei
Drops files in suspicious directories
Found Tor onion address
Machine Learning detection for dropped file
Machine Learning detection for sample
Sample deletes itself
Sample is packed with UPX
Creates hidden files and/or directories
ELF contains segments with high entropy indicating compressed/encrypted content
Enumerates processes within the "proc" file system
Executes commands using a shell command-line interpreter
Executes the "pgrep" command search for and/or send signals to processes
Executes the "systemctl" command used for controlling the systemd system and service manager
HTTP GET or POST without a user agent
Reads CPU information from /sys indicative of miner or evasive malware
Reads system information from the proc file system
Sample contains only a LOAD segment without any section mappings
Sample listens on a socket
Sample tries to set the executable flag
Suricata IDS alerts with low severity for network traffic
Uses the "uname" system call to query kernel version information (possible evasion)
Writes ELF files to disk
Yara signature match

Classification

AV Detection

barindex
Source: na.elf ReversingLabs: Detection: 52%
Source: /usr/sbin/uplugplay Joe Sandbox ML: detected
Source: na.elf Joe Sandbox ML: detected

Bitcoin Miner

barindex
Source: Yara match File source: Process Memory Space: na.elf PID: 6265, type: MEMORYSTR
Source: /usr/bin/pgrep (PID: 6269) Reads CPU info from /sys: /sys/devices/system/cpu/online Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) Reads CPU info from /sys: /sys/devices/system/cpu/online Jump to behavior
Source: /usr/bin/pgrep (PID: 6281) Reads CPU info from /sys: /sys/devices/system/cpu/online Jump to behavior
Source: /usr/sbin/uplugplay (PID: 6317) Reads CPU info from /sys: /sys/devices/system/cpu/online Jump to behavior

Networking

barindex
Source: Network traffic Suricata IDS: 2044561 - Severity 1 - ET MALWARE Prometei Botnet CnC Domain (feefreepool .net) in DNS Lookup : 192.168.2.23:47912 -> 8.8.8.8:53
Source: Network traffic Suricata IDS: 2044562 - Severity 1 - ET MALWARE Prometei Botnet CnC Checkin : 192.168.2.23:56836 -> 88.198.246.242:80
Source: na.elf, 6265.1.0000000000520000.0000000001565000.rw-.sdmp String found in binary or memory: https://gb7ni5rgeexdcncj.onion/cgi-bin/prometei.cgi
Source: na.elf, 6265.1.0000000000520000.0000000001565000.rw-.sdmp String found in binary or memory: Mhttp://p3.feefreepool.net/cgi-bin/prometei.cgihttp://dummy.zero/cgi-bin/prometei.cgihttps://gb7ni5rgeexdcncj.onion/cgi-bin/prometei.cgihttp://mkhkjxgchtfgu7uhofxzgoawntfzrkdccymveektqgpxrpjb72oq.b32.i2p/cgi-bin/prometei.cgi/usr/sbin/uplugplay/etc/uplugplay/etc/CommIdcrashed.dump/usr/sbin//etc/msdtcmsdtc2msdtc3/etc/pcc0/etc/pcc1pbdebug
Source: global traffic HTTP traffic detected: GET /cgi-bin/prometei.cgi?r=3&i=Q2P4J2PJX5967X75 HTTP/1.0Host: p3.feefreepool.net
Source: /usr/sbin/uplugplay (PID: 6317) Socket: 0.0.0.0:88 Jump to behavior
Source: Network traffic Suricata IDS: 2803305 - Severity 3 - ETPRO MALWARE Common Downloader Header Pattern H : 192.168.2.23:56836 -> 88.198.246.242:80
Source: unknown TCP traffic detected without corresponding DNS query: 91.189.91.42
Source: unknown TCP traffic detected without corresponding DNS query: 91.189.91.43
Source: unknown TCP traffic detected without corresponding DNS query: 109.202.202.202
Source: unknown TCP traffic detected without corresponding DNS query: 91.189.91.42
Source: unknown TCP traffic detected without corresponding DNS query: 91.189.91.43
Source: unknown TCP traffic detected without corresponding DNS query: 109.202.202.202
Source: unknown TCP traffic detected without corresponding DNS query: 91.189.91.42
Source: unknown TCP traffic detected without corresponding DNS query: 91.189.91.43
Source: global traffic HTTP traffic detected: GET /cgi-bin/prometei.cgi?r=3&i=Q2P4J2PJX5967X75 HTTP/1.0Host: p3.feefreepool.net
Source: global traffic DNS traffic detected: DNS query: p3.feefreepool.net
Source: na.elf, 6265.1.0000000000520000.0000000001565000.rw-.sdmp String found in binary or memory: http://dummy.zero/cgi-bin/prometei.cgi
Source: na.elf, 6265.1.0000000000520000.0000000001565000.rw-.sdmp String found in binary or memory: http://mkhkjxgchtfgu7uhofxzgoawntfzrkdccymveektqgpxrpjb72oq.b32.i2p/cgi-bin/prometei.cgi
Source: na.elf, 6265.1.0000000000520000.0000000001565000.rw-.sdmp String found in binary or memory: http://p3.feefreepool.net/cgi-bin/prometei.cgi
Source: na.elf, 6265.1.0000000000520000.0000000001565000.rw-.sdmp String found in binary or memory: http://p3.feefreepool.net/cgi-bin/prometei.cgihttp://dummy.zero/cgi-bin/prometei.cgihttps://gb7ni5rg
Source: na.elf, uplugplay.12.dr String found in binary or memory: http://upx.sf.net
Source: na.elf, 6265.1.0000000000520000.0000000001565000.rw-.sdmp String found in binary or memory: https://gb7ni5rgeexdcncj.onion/cgi-bin/prometei.cgi
Source: unknown Network traffic detected: HTTP traffic on port 43928 -> 443
Source: unknown Network traffic detected: HTTP traffic on port 42836 -> 443

System Summary

barindex
Source: 6265.1.0000000000401000.00000000004ed000.r-x.sdmp, type: MEMORY Matched rule: Linux_Hacktool_Flooder_1a4eb229 Author: unknown
Source: 6265.1.0000000000401000.00000000004ed000.r-x.sdmp, type: MEMORY Matched rule: Linux_Hacktool_Flooder_f454ec10 Author: unknown
Source: LOAD without section mappings Program segment: 0x400000
Source: 6265.1.0000000000401000.00000000004ed000.r-x.sdmp, type: MEMORY Matched rule: Linux_Hacktool_Flooder_1a4eb229 reference_sample = bf6f3ffaf94444a09b69cbd4c8c0224d7eb98eb41514bdc3f58c1fb90ac0e705, os = linux, severity = x86, creation_date = 2021-01-12, scan_context = file, memory, license = Elastic License v2, threat_name = Linux.Hacktool.Flooder, fingerprint = de076ef23c2669512efc00ddfe926ef04f8ad939061c69131a0ef9a743639371, id = 1a4eb229-a194-46a5-8e93-370a40ba999b, last_modified = 2021-09-16
Source: 6265.1.0000000000401000.00000000004ed000.r-x.sdmp, type: MEMORY Matched rule: Linux_Hacktool_Flooder_f454ec10 severity = 100, os = linux, arch_context = x86, creation_date = 2022-01-05, scan_context = file, memory, reference = 0297e1ad6e180af85256a175183102776212d324a2ce0c4f32e8a44a2e2e9dad, license = Elastic License v2, threat_name = Linux.Hacktool.Flooder, fingerprint = 2ae5e2c3190a4ce5d238efdb10ac0520987425fb7af52246b6bf948abd0259da, id = f454ec10-7a67-4717-9e95-fecb7c357566, last_modified = 2022-01-26
Source: classification engine Classification label: mal96.troj.evad.linELF@0/5@1/0

Data Obfuscation

barindex
Source: initial sample String containing UPX found: $Info: This file is packed with the UPX executable packer http://upx.sf.net $
Source: initial sample String containing UPX found: $Info: This file is packed with the UPX executable packer http://upx.sf.net $
Source: initial sample String containing UPX found: $Id: UPX 3.95 Copyright (C) 1996-2018 the UPX Team. All Rights Reserved. $
Source: /usr/bin/pidof (PID: 6277) Directory: //. Jump to behavior
Source: /usr/bin/pidof (PID: 6287) Directory: //. Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/1582/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/1582/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/3088/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/3088/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/230/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/230/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/110/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/110/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/231/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/231/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/111/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/111/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/232/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/232/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/1579/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/1579/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/112/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/112/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/233/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/233/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/1699/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/1699/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/113/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/113/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/234/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/234/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/1335/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/1335/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/1698/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/1698/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/114/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/114/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/235/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/235/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/1334/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/1334/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/1576/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/1576/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/2302/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/2302/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/115/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/115/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/236/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/236/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/116/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/116/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/237/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/237/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/117/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/117/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/118/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/118/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/910/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/910/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/119/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/119/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/912/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/912/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/10/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/10/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/2307/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/2307/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/11/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/11/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/918/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/918/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/12/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/12/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/13/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/13/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/14/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/14/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/15/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/15/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/16/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/16/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/17/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/17/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/6247/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/6247/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/18/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/18/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/6246/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/6246/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/1594/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/1594/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/120/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/120/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/121/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/121/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/1349/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/1349/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/1/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/1/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/122/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/122/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/243/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/243/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/123/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/123/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/2/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/2/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/124/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/124/cmdline Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/3/status Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) File opened: /proc/3/cmdline Jump to behavior
Source: /tmp/na.elf (PID: 6268) Shell command executed: sh -c "pgrep na.elf" Jump to behavior
Source: /tmp/na.elf (PID: 6272) Shell command executed: sh -c "pgrep uplugplay" Jump to behavior
Source: /tmp/na.elf (PID: 6276) Shell command executed: sh -c "pidof uplugplay" Jump to behavior
Source: /tmp/na.elf (PID: 6280) Shell command executed: sh -c "pgrep upnpsetup" Jump to behavior
Source: /tmp/na.elf (PID: 6286) Shell command executed: sh -c "pidof upnpsetup" Jump to behavior
Source: /tmp/na.elf (PID: 6289) Shell command executed: sh -c "systemctl daemon-reload" Jump to behavior
Source: /tmp/na.elf (PID: 6305) Shell command executed: sh -c "systemctl enable uplugplay.service" Jump to behavior
Source: /tmp/na.elf (PID: 6312) Shell command executed: sh -c "systemctl start uplugplay.service" Jump to behavior
Source: /usr/sbin/uplugplay (PID: 6316) Shell command executed: sh -c "/usr/sbin/uplugplay -Dcomsvc" Jump to behavior
Source: /bin/sh (PID: 6269) Pgrep executable: /usr/bin/pgrep -> pgrep na.elf Jump to behavior
Source: /bin/sh (PID: 6273) Pgrep executable: /usr/bin/pgrep -> pgrep uplugplay Jump to behavior
Source: /bin/sh (PID: 6281) Pgrep executable: /usr/bin/pgrep -> pgrep upnpsetup Jump to behavior
Source: /bin/sh (PID: 6290) Systemctl executable: /usr/bin/systemctl -> systemctl daemon-reload Jump to behavior
Source: /bin/sh (PID: 6306) Systemctl executable: /usr/bin/systemctl -> systemctl enable uplugplay.service Jump to behavior
Source: /bin/sh (PID: 6313) Systemctl executable: /usr/bin/systemctl -> systemctl start uplugplay.service Jump to behavior
Source: /usr/sbin/uplugplay (PID: 6317) Reads from proc file: /proc/stat Jump to behavior
Source: /tmp/na.elf (PID: 6265) File: /usr/sbin/uplugplay (bits: -v usr: x grp: x all: r) Jump to behavior
Source: /tmp/na.elf (PID: 6265) File written: /usr/sbin/uplugplay Jump to dropped file
Source: submitted sample Stderr: Created symlink /etc/systemd/system/multi-user.target.wants/uplugplay.service /lib/systemd/system/uplugplay.service.: exit code = 0

Hooking and other Techniques for Hiding and Protection

barindex
Source: /tmp/na.elf (PID: 6265) File: /usr/sbin/uplugplay Jump to dropped file
Source: /tmp/na.elf (PID: 6265) File: /tmp/na.elf Jump to behavior
Source: na.elf Submission file: segment LOAD with 7.942 entropy (max. 8.0)
Source: uplugplay.12.dr Dropped file: segment LOAD with 7.942 entropy (max. 8.0)
Source: /usr/bin/pgrep (PID: 6269) Reads CPU info from /sys: /sys/devices/system/cpu/online Jump to behavior
Source: /usr/bin/pgrep (PID: 6273) Reads CPU info from /sys: /sys/devices/system/cpu/online Jump to behavior
Source: /usr/bin/pgrep (PID: 6281) Reads CPU info from /sys: /sys/devices/system/cpu/online Jump to behavior
Source: /usr/sbin/uplugplay (PID: 6317) Reads CPU info from /sys: /sys/devices/system/cpu/online Jump to behavior
Source: /tmp/na.elf (PID: 6265) Queries kernel information via 'uname': Jump to behavior
Source: /usr/sbin/uplugplay (PID: 6314) Queries kernel information via 'uname': Jump to behavior
Source: /usr/sbin/uplugplay (PID: 6317) Queries kernel information via 'uname': Jump to behavior
  • No. of IPs < 25%
  • 25% < No. of IPs < 50%
  • 50% < No. of IPs < 75%
  • 75% < No. of IPs