AhnLab EDR을 활용한 리눅스 PAM 악용 악성코드 공격 탐지
PAM (Pluggable Authentication Modules)은 su, sudo, sshd와 같은 응용 프로그램이 인증과 같은 보안 정책 로직을 직접 구현하지 않고도 수행할 수 있게 해주는 모듈형 프레임워크이다. 응용 프로그램은 libpam 라이브러리에 인증을 위임하며 해당 라이브러리에서 설정 정보에 따라 PAM 모듈을 로드하여 실행한 뒤 결과를 취합하는 방식이다.
예를 들어 OpenSSH 서버 프로세스인 sshd에 로그인 시 libpam 라이브러리의 pam_authenticate()와 같은 함수를 호출한다. 그리고 로드되어 있는 등록된 PAM 모듈들의 서비스 모듈 함수를 실행하는데 대표적으로 pam_sm_authenticate() 함수가 있다. pam_sm_authenticate() 함수는 인증을 담당하며 인증을 담당하는 PAM 모듈에는 해당 함수에 인증과 관련된 내용이 포함된다. 하지만 만약 등록된 PAM 모듈이 악성코드라면 제작자는 pam_sm_authenticate() 함수에 악의적인 루틴을 구현할 것이다.
1. PAM 악성코드
일반적으로 PAM 모듈로 구현된 악성코드들은 pam_sm_authenticate() 함수가 호출될 때 자격 증명 정보를 획득해 탈취한다. 이러한 유형의 악성코드는 2025년 5월 Nextron사에서 공개한 보고서에서도 공개된 바 있다. [1] 해당 사례는 악성코드 자체에 대한 분석 보고서임에 따라 초기 침투 과정 등 공격자가 어떻게 설치하였는지는 알 수 없지만 악성코드 제작자들은 사용자가 로그인할 때 자격 증명 정보를 획득해 탈취하기 위한 목적으로 PAM 악성코드를 제작하였다. 각 악성코드들의 pam_sm_authenticate() 함수에는 획득한 자격 증명 정보를 C&C 서버에 전송하거나 특정 경로에 쓰는 루틴이 존재한다.

Figure 1. 자격 증명 정보를 /tmp/sshlog 파일에 쓰는 pam_sm_authenticate() 함수

Figure 2. 자격 증명 정보를 C&C 서버에 전송하는 유형들
AhnLab EDR은 PAM 모듈을 등록하는 이벤트를 주요 행위로 탐지하여 관리자가 이를 사전에 인지할 수 있도록 도와준다.

Figure 3. PAM 모듈 등록 행위에 대한 EDR 탐지
2. PAM 후킹 악성코드 (Plague)
PAM 모듈 형태로 악성코드를 제작하고 등록하지 않더라도 pam_authenticate() 함수가 후킹될 경우 자격 증명 정보가 탈취될 수 있다. 2025년 8월에는 Plague라는 이름의 악성코드에 대한 보고서가 공개되었다. [2] Plague는 PRELOAD 방식을 이용하는 악성코드로서 실행되는 프로세스의 메모리에 자신을 로드시키는데 이에 따라 sshd와 같은 프로세스에도 로드될 수 있다.
PRELOAD 방식의 장점은 만약 응용 프로그램이 특정 함수를 호출할 때 PRELOAD된 라이브러리가 동일한 이름의 함수를 지원할 경우 PRELOAD된 라이브러리의 해당 함수가 먼저 호출된다는 점이다. 예를 들어 sshd가 pam_authenticate() 함수를 호출할 때 PRELOAD 방식으로 로드된 Plague의 pam_authenticate() 함수가 libpam 라이브러리의 pam_authenticate() 함수보다 먼저 호출된다.
Plague가 감염 시스템에 설치될 경우 이러한 방식을 악용하는 pam_authenticate() 함수에 악성 루틴이 포함되어 있다. 먼저 사용자가 로그인 시 다음과 같이 “/var/log/.-utmpx”와 같은 특정 경로에 자격 증명 정보를 저장한다.

Figure 4. 자격 증명 정보가 기록되는 파일
또한 하드코딩된 비밀번호도 지원하는데 다음 샘플은 로그인 과정에서 사용자가 “changeme”라는 비밀번호를 입력했는지 검사하면서 매칭될 경우 로그인을 성공시킨다. 이에 따라 공격자는 기존 계정들의 비밀번호와 상관없이 비밀번호 “changeme”를 통해 로그인할 수 있게 된다.

Figure 5. pam_authenticate() 함수 후킹 루틴
참고로 Plague는 공격자가 비밀번호 “changeme”를 통해 로그인할 경우 쉘 히스토리가 남지 않도록 한다. 그리고 특정 이름의 파일들을 은폐하는데 그 대상으로는 자격 증명 정보가 포함되는 파일 “.-utmpx”처럼 “.-“로 시작하는 파일들, 악용 대상 파일인 “ld.so.preload” 그리고 악성코드 이름으로 추정되는 “libselinux.so.8″가 있다.

Figure 6. 은폐 대상 파일명 목록
단순히 Plague라는 이름의 악성코드만 알려짐에 따라 초기 침투 방식이나 공격자가 어떻게 사용하였는지는 알 수 없지만 Plague의 특성상 PRELOAD 방식으로 설치되었을 것으로 보인다. 즉 공격자 또는 설치를 담당하는 악성코드가 “LD_PRELOAD” 환경 변수를 설정하거나 “/etc/ld.so.preload” 경로의 파일에 Plague의 경로명을 쓰는 방식으로 설치할 수 있다.
AhnLab EDR은 PRELOAD 방식 즉 “/etc/ld.so.preload” 경로의 파일을 수정하는 행위를 위협으로 탐지하여 관리자가 이를 사전에 인지할 수 있도록 도와준다. 또한 PRELOAD 방식을 통해 라이브러리가 로드될 경우 주요 행위로 탐지하여 PAM 모듈을 등록하는 이벤트를 주요 행위로 탐지하여 관리자가 원인 파악과 적절한 대응을 진행할 수 있게 한다.

Figure 7. /etc/ld.so.preload 설정 행위에 대한 EDR 탐지

Figure 8. 라이브러리가 PRELOAD 방식으로 로드되는 행위에 대한 EDR 탐지
3. 결론
최근 PAM을 통한 인증 과정을 공격해 자격 증명 정보를 탈취하거나 백도어 비밀번호를 설정하는 사례가 공개되었다. 악성코드 제작자들은 악성 PAM 모듈 형태로 설치할 수 있도록 제작하거나 PRELOAD라는 기법을 이용해 PAM 인증에 사용되는 함수를 후킹할 수 있도록 악성코드를 만들고 있다. 두 방식 모두 리눅스 서버의 사용자 계정에 대한 자격 증명 정보를 탈취하는데 악용될 수 있으며 이외에도 공격자가 지정한 특정 비밀번호를 입력할 경우 모든 계정에서 로그인에 성공할 수 있도록 설정하여 지속성을 유지시킬 수도 있다.
AhnLab EDR은 공격자가 의심스러운 PAM 악성코드를 등록하거나 PAM 인증을 공격하는 악성코드를 설치하는 PRELOAD 방식에 대해 위협 및 주요 행위로 탐지한다. 관리자는 이를 통해 원인 파악과 적절한 대응을 진행할 수 있으며 공격에 노출된 이후에도 공격 대상이 된 시스템에서 공격자의 증적 자료로서 침해 사고 조사에 필요한 데이터를 확인할 수 있다.
AhnLab EDR 진단명
- Plague 악성코드
- Persistence/EDR.Preload.M10892 (2023.03.03.03)
- Suspicious/DETECT.T1574.006.M10894 (2023.03.03.03)
- PAM 악성코드
- Persistence/DETECT.PAM.M12915 (2025.08.07.03)
V3 진단명
- Plague 악성코드
- Backdoor/Linux.Plague (2025.08.04.00)
- Backdoor/Linux.Plague.XE268 (2025.08.11.02)
- PAM 악성코드
-
Backdoor/Linux.PAM.13016 (2025.08.04.03)
-
Backdoor/Linux.PAM.15560 (2025.08.04.03)
-
Backdoor/Linux.PAM.7880 (2025.08.04.03)
-
Backdoor/Linux.PAM.12888 (2025.08.04.03)
-
Backdoor/Linux.PAM.15568 (2025.08.04.03)
-
Backdoor/Linux.PAM.SE335 (2025.08.11.02)
-
Backdoor/Linux.PAM.SE336 (2025.08.11.02)
-
Backdoor/Linux.PAM.SE337 (2025.08.11.02)
-
Backdoor/Linux.PAM.SE338 (2025.08.11.02)
-