Detecting Suspicious Processes in Linux: How to Investigate Unknown Services, Network Connections and Startup Tasks
Linux administrators often encounter situations where a server suddenly consumes more resources, unknown network connections appear, or a previously stopped process restarts after reboot. This does not always indicate a compromise and may result from faulty applications, incorrect service configurations, backup operations, or routine maintenance tasks.
Starting with Processes
Each running program instance receives a unique PID. To list processes sorted by CPU usage, run ps aux --sort=-%cpu | head -20. For memory consumption, use ps aux --sort=-%mem | head -20. Interactive monitoring is available via top or htop when installed.
High resource usage by an unexpected binary such as /opt/unknown/worker warrants further investigation. Useful details include the parent process ID, start time, and command line obtained with ps -p 1842 -o pid,ppid,user,lstart,etime,cmd.
Examining the Executable File
The actual binary path is revealed by readlink -f /proc/1842/exe. Command-line arguments are shown with ps -p 1842 -o args=. File metadata including owner and modification time can be checked using stat. On Debian-based systems, dpkg -S identifies the package owning a file when applicable.
Reviewing Network Connections
Listening TCP and UDP sockets are displayed with sudo ss -lntup, while established connections use sudo ss -tnp. The lsof -i command provides additional process-to-port mapping when available. LISTEN and ESTAB states indicate listening services and active connections respectively.
Checking systemd Services
Running services are listed via systemctl list-units --type=service --state=running. Unit files and failed services are examined with systemctl list-unit-files --type=service and systemctl --failed. Detailed status and configuration are retrieved using systemctl status and systemctl cat, paying special attention to the ExecStart directive.
Investigating Scheduled Tasks
User cron jobs are viewed with crontab -l. System-wide schedules reside in /etc/cron.d/, /etc/cron.hourly/, and similar directories. systemctl list-timers --all shows systemd timers. Each discovered job should be verified against system documentation and file ownership.
Auditing User Accounts and SSH Keys
Local users are enumerated with getent passwd. Accounts possessing UID 0 are identified by awk -F: '$3 == 0 {print $1 ":" $3}' /etc/passwd. Authorized SSH keys are typically stored in ~/.ssh/authorized_keys and should be compared against approved lists.
Correlating Events and Preserving Evidence
System logs are queried with sudo journalctl --since "today" or filtered by service name. When multiple indicators align, such as an unusual SSH login followed by new service creation and unexpected outbound connections, further investigation is warranted. If compromise is suspected, first record timestamps and preserve logs before remediation.
Related articles
TLS Fingerprinting Explained: From Handshakes in TLS 1.2/1.3 to JA3, JA4, HTTP/2 Analysis and uTLS Evasion
The article provides an in-depth examination of how TLS handshakes reveal client identity even before any HTTP data is sent. It traces the evolution from early SSL versions developed by Netscape to modern TLS 1.3, highlighting how elliptic curve cryptography and AEAD ciphers reduced latency while increasing observability challenges for defenders. Detailed breakdowns show why JA3 hashes became unreliable due to GREASE randomization and extension ordering changes, prompting the shift to the more robust JA4+ family that uses sorted, GREASE-resistant blocks for stable fingerprints. The piece also covers HTTP/2 fingerprinting signals and practical tools such as uTLS in Go for mimicking browser TLS stacks and Finch for traffic analysis. Real Wireshark captures of Client Hello packets to GitHub illustrate how Cloudflare and WAF systems detect scripted clients despite matching User-Agent headers. Overall, the content serves as both a historical overview and a hands-on guide for security engineers working on bot mitigation and traffic obfuscation.
Centralized Secret Management: Comparing Eight Tools for DevOps and Spring Boot Applications
The article examines the challenges of managing secrets such as passwords, API tokens, and SSH keys across development, CI/CD pipelines, and production environments. It explains how centralized secret registries solve issues like scattered .env files, outdated credentials, and lack of audit trails while emphasizing that delivery mechanisms to applications must be chosen separately. Key concepts including static versus dynamic credentials, leases, rotation, and machine identities are defined to help teams implement least-privilege access. The review compares Infisical, HashiCorp Vault, OpenBao, Doppler, 1Password CLI, Bitwarden Secrets Manager, Passbolt, and Yandex Lockbox across deployment models, offline support, and integration options. Special attention is given to CLI run commands that avoid plaintext files, Spring Cloud Vault integration, and the trade-offs between SaaS convenience and self-hosted control. Practical recommendations focus on separating developer and machine access as well as development and production environments.
Opera Rolls Out Local AI Processing via WebAI Standard in Opera One Browser
Opera has introduced an early implementation of WebAI, a proposed web standard that enables websites and extensions to run AI models directly on the user's device instead of relying on remote servers. The feature debuts in Opera One and will later expand to Opera GX and Neon. Supported models include Google's Gemma as well as Apple's local foundational model on compatible Mac hardware, with no vendor lock-in. Key capabilities cover text generation, content classification, and analysis of relationships between information fragments. Developers gain the ability to add AI features without building server infrastructure or incurring per-query cloud costs, while users avoid subscriptions to external AI services. All processing occurs locally on an opt-in basis, keeping data off cloud providers, although performance depends on the device's hardware capabilities.
Russian Prosecutor's Office Withdraws Lawsuit Against Timur Turlov and Freedom Holding Corp.
The Tverskoy District Court in Moscow terminated proceedings after the Russian Prosecutor General's Office withdrew its administrative claim against Timur Turlov and several related entities. The court accepted the refusal on October 15, 2026, lifted all previously imposed asset restrictions, and ended the case without examining the merits. The original claim sought to seize hundreds of millions of dollars in assets, declare the defendants an extremist organization, and ban their activities in Russia. No reasons for the sudden withdrawal were provided during the preliminary hearing. The decision prevents the Prosecutor General's Office from refiling the same claim against the same parties on identical grounds under Russian administrative procedure rules. Freedom Holding Corp. stated it has no operations or assets in Russia and expressed surprise at the original filing. Timur Turlov, who holds Kazakh citizenship and serves as FIDE president, was listed among the defendants alongside Freedom Holding Corp., Freedom Finance Europe Ltd., and W-Empirical Holding Corp.