Linux Post-Exploitation
PAM을 사용하여 로그온 비밀번호 스니핑하기
각 사용자가 로그인할 때 사용하는 비밀번호를 기록하기 위해 PAM 모듈을 구성해보겠습니다. PAM이 무엇인지 모르는 경우 다음을 확인하세요:
pagePAM - Pluggable Authentication Modules자세한 내용은 원본 게시물을 참조하세요. 이것은 요약일 뿐입니다:
기법 개요: Pluggable Authentication Modules (PAM)은 Unix 기반 시스템에서 인증을 관리하는 유연성을 제공합니다. 이들은 로그인 프로세스를 사용자 정의하여 보안을 강화할 수 있지만 잘못 사용될 경우 위험을 가질 수도 있습니다. 이 요약에서는 PAM을 사용하여 로그인 자격 증명을 캡처하는 기술과 완화 전략을 설명합니다.
자격 증명 캡처:
toomanysecrets.sh
라는 bash 스크립트가 작성되어 로그인 시도를 기록하고, 날짜, 사용자 이름 ($PAM_USER
), 비밀번호 (stdin을 통해), 원격 호스트 IP ($PAM_RHOST
)를/var/log/toomanysecrets.log
에 기록합니다.스크립트는 실행 가능하게 만들어지고,
pam_exec.so
모듈을 사용하여 PAM 구성 (common-auth
)에 통합되며, 스크립트에 대한 인증 토큰을 조용히 실행하고 노출하는 옵션을 가지고 있습니다.이 접근 방식은 침투된 Linux 호스트가 은밀하게 자격 증명을 기록하는 방법을 보여줍니다.
PAM에 백도어 설치하기
자세한 내용은 원본 게시물을 확인하세요. 이것은 간략한 요약입니다:
Pluggable Authentication Module (PAM)은 Linux에서 사용되는 사용자 인증 시스템입니다. 이는 사용자 이름, 비밀번호, 서비스라는 세 가지 주요 개념을 기반으로 작동합니다. 각 서비스의 구성 파일은 /etc/pam.d/
디렉토리에 위치하며, 공유 라이브러리가 인증을 처리합니다.
목표: PAM을 수정하여 실제 사용자 비밀번호를 우회하고 특정 비밀번호로 인증을 허용합니다. 특히, 대부분의 서비스에서 비밀번호 확인을 위해 사용되는 common-auth
파일에서 사용되는 pam_unix.so
공유 라이브러리에 초점을 맞춥니다.
pam_unix.so
수정 단계:
pam_unix.so
수정 단계:common-auth
파일에서 인증 지시문을 찾습니다:
사용자의 비밀번호를 확인하는 책임이 있는 줄이
pam_unix.so
를 호출합니다.
소스 코드 수정:
pam_unix_auth.c
소스 파일에 조건문을 추가하여 미리 정의된 비밀번호를 사용하면 액세스를 허용하고, 그렇지 않으면 일반적인 인증 프로세스를 진행합니다.
수정된
pam_unix.so
라이브러리를 적절한 디렉토리에 재컴파일 및 교체합니다.테스트:
미리 정의된 비밀번호로 다양한 서비스 (로그인, ssh, sudo, su, 스크린세이버)에 액세스가 허용되지만, 일반적인 인증 프로세스는 영향을 받지 않습니다.
https://github.com/zephrax/linux-pam-backdoor를 사용하여 이 과정을 자동화할 수 있습니다.
Last updated