쿠키로 제어되는 PHP 웹 셸: 리눅스 호스트에서의 은밀한 트레이드크래프트
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
위협 행위자가 Linux 호스팅 서버에서 PHP 웹 셸의 감추어진 ‘활성화 키’로서 HTTP 쿠키를 악용하고 있습니다. 이 임플란트는 특정 쿠키 값이 제공될 때까지 비활성 상태로 유지되다가, 공격자가 제공한 페이로드를 디코드하고 실행합니다. 이러한 접근 방식은 지속적인 원격 코드 실행을 가능하게 하면서 일상 로그에서 뚜렷한 지표를 줄이는 데 도움이 됩니다. 일반적인 지원 기술에는 레이어 오브퓨스케이션, 크론 기반 자가 치유, 표준 서버 유틸리티를 사용한 ‘리빙 오프 더 랜드’ 등이 포함됩니다.
조사
연구원들은 여러 개의 손상된 호스팅 계정을 검토하고, 트리거 쿠키가 존재할 때만 Base64로 인코딩된 블롭에서 기능을 재구성하는 PHP 로더를 발견했습니다. 지속성은 주기적으로 웹 셸을 복원하는 호스팅 컨트롤 패널(예: cPanel)을 통해 생성된 크론 작업을 통해 유지되었습니다. 실행은 일반적으로 php-fpm 및 다른 웹 워커를 통해 이루어졌으며, 이는 쉘 해석기를 생성하고 2차적 페이로드를 가져와 접근을 확장했습니다.
대응책
호스팅 제어판 및 관리 접근 경로에 대해 MFA를 요구하십시오. 웹 서버 프로세스가 셸을 생성하거나 base64, curl, wget과 같은 일반적인 스테이징 유틸리티를 호출할 수 없도록 제한하십시오. 크론 생성 및 수정을 주의 깊게 모니터링하고 웹 디렉토리 내의 예기치 않은 파일 쓰기 또는 변화를 알립니다. 추가 강화 조치에는 자일 셸 접근 제한 및 Linux 서버에서 실시간 엔드포인트 보호 활성화가 포함됩니다.
응답
식별되면 호스트를 격리하고, 악성 크론 항목을 비활성화 및 제거하며, 의심스러운 PHP 아티팩트를 삭제하고, 피해 호스팅 계정의 자격 증명을 교체하십시오. 트리거 쿠키 값 및 관련 명령줄을 포함하여 증거를 보존하고 검토한 후 다시 배포 및 반복적인 손상을 방지하기 위해 강화 제어를 적용하십시오.
"그래프 TB %% 클래스 정의 classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ffeb99 classDef builtin fill:#cccccc %% 액션 노드 step1_initial_access["<b>기법</b> – T1190 공공 페이싱 애플리케이션 악용<br/><b>설명</b>: 웹 관련 애플리케이션의 취약점을 이용해 악성 PHP 파일을 업로드하고 초기 발판을 얻습니다."] class step1_initial_access action step2_persistence_webshell["<b>기법</b> – T1505.003 서버 소프트웨어 컴포넌트: 웹 셸<br/><b>설명</b>: 업로드된 PHP 파일이 지속적인 원격 액세스를 제공하는 웹 셸로 작동합니다."] class step2_persistence_webshell action step3_def_evasion_obfuscation["<b>기법</b> – T1027.008 난독화된 파일 또는 정보: 스트립된 페이로드<br/><b>설명</b>: 로더 코드가 패킹되고 스트립되어 실제 기능을 숨깁니다."] class step3_def_evasion_obfuscation action step3b_def_evasion_api["<b>기법</b> – T1027.007 동적 API 해석<br/><b>설명</b>: 기능 이름이 런타임에 재구성되어 정적 탐지를 피합니다."] class step3b_def_evasion_api action step4_decode["<b>기법</b> – T1140 파일 또는 정보 해독/디코딩<br/><b>설명</b>: 서버에서 Base64 블롭이 디코딩되어 악성 페이로드를 재구성합니다."] class step4_decode action step5_unix_shell["<b>기법</b> – T1059.004 명령 및 스크립팅 해석기: Unix 셸<br/><b>설명</b>: 웹 셸이 /bin/sh 또는 bash를 생성하여 공격자가 제공한 명령을 실행합니다."] class step5_unix_shell action step6_cookie_cred["<b>기법</b> – 쿠키를 통한 자격 증명 접근<br/><b>설명</b>: 특정 $_COOKIE 값에 의해 실행이 제한되어 공격자가 코드 실행 시점을 제어할 수 있습니다."] class step6_cookie_cred action step7_permission_mod["<b>기법</b> – T1222.002 Linux 및 Mac 파일 및 디렉터리 권한 수정<br/><b>설명</b>: 생성된 PHP 파일은 실행 가능하고 제거에 저항할 수 있도록 허용 모드를 부여 받습니다."] class step7_permission_mod action step8_ingress_transfer["<b>기법</b> – T1105 인그레스 도구 전송<br/><b>설명</b>: curl 또는 wget이 추가 도구 또는 2단계 페이로드를 웹 루트로 다운로드합니다."] class step8_ingress_transfer action step9_persistence_cron["<b>기법</b> – T1053.003 예약된 작업/잡: 크론<br/><b>설명</b>: 사용자 레벨의 크론 작업이 난독화된 로더를 주기적으로 재생성하여 자가 치유 발판을 보장합니다."] class step9_persistence_cron action step10_def_evasion_cont["<b>기법</b> – 지속적인 난독화 및 제한된 가시성<br/><b>설명</b>: 악의적 활동이 정상 웹 트래픽 뒤에 숨겨져 있으며 올바른 쿠키에서만 트리거되어 로그 증거를 줄입니다."] class step10_def_evasion_cont action %% 도구/프로세스 노드 tool_php["<b>도구</b> – PHP 해석기"] class tool_php tool tool_curl_wget["<b>도구</b> – curl / wget"] class tool_curl_wget tool tool_cron["<b>도구</b> – 크론 스케줄러"] class tool_cron tool process_apache["<b>프로세스</b> – apache2 / phpu2011fpm"] class process_apache process %% 연결 step1_initial_access –>|로 이끌다| step2_persistence_webshell step2_persistence_webshell –>|활성화| step3_def_evasion_obfuscation step3_def_evasion_obfuscation –>|사용| step3b_def_evasion_api step3b_def_evasion_api –>|준비| step4_decode step4_decode –>|실행| step5_unix_shell step5_unix_shell –>|체크| step6_cookie_cred step6_cookie_cred –>|설정| step7_permission_mod step7_permission_mod –>|다운로드 통해| tool_curl_wget tool_curl_wget –>|를 저장합니다페이로드 위해| step8_ingress_transfer step8_ingress_transfer –>|트리거| step9_persistence_cron step9_persistence_cron –>|강화| step10_def_evasion_cont step10_def_evasion_cont –>|작동 내에서| process_apache process_apache –>|실행| tool_php "
공격 흐름
시뮬레이션 실행
전제 조건: Telemetry & Baseline Pre‑flight 체크가 통과해야 합니다.
이유: 이 섹션에서는 탐지 규칙을 트리거하기 위해 설계된 적의 기법(TTP)의 정확한 실행을 상세히 설명합니다. 명령과 설명은 식별된 TTP를 직접적으로 반영해야 하며, 탐지 로직이 기대하는 정확한 원격측정을 생성하기 목표로 해야 합니다. 추상적이거나 관련 없는 예제는 오진을 초래할 것입니다.
-
공격 이야기 및 명령:
이미 웹 서버를 손상시킨 공격자가 악성 PHP 웹셸을 얻습니다 (malicious.php). 이를 활성화하려면 공격자는 조작된 쿠키를 주입하는 HTTP 요청을 발행합니다. 웹 서버의 PHP 핸들러는 쿠키를 해석하고 웹셸 파일을 실행하는 Bash 프로세스를 생성합니다. 테스트를 위해 수동으로 Bash를 ‘.php’를 포함하는 명령줄과 함께 호출하여 동일한 효과를 지역적으로 시뮬레이션합니다. 이는 Sigma 규칙이 모니터링하는 정확한 원격측정(쉘 해석기 + 명령줄의 ‘.php’)을 생성합니다.- 더미 PHP 웹셸을 생성합니다 (해로운 코드 없이, 시각화를 위한 무해한
phpinfo()). - 명령줄 내에
.php파일 이름을 포함하여 Bash를 통해 웹셸을 실행합니다. - 프로세스 생성 이벤트가 예상 필드와 함께 감사 로그에 나타나는지 확인하십시오.
- 더미 PHP 웹셸을 생성합니다 (해로운 코드 없이, 시각화를 위한 무해한
-
회귀 테스트 스크립트:
#!/usr/bin/env bash set -euo pipefail # 1. 무해한 PHP 파일 배포 (시뮬레이션 웹셸) WEBROOT="/tmp/webshell_test" mkdir -p "$WEBROOT" cat > "$WEBROOT/malicious.php" <<'EOF' EOF # 2. Bash 해석기를 통해 실행 트리거 (명령줄에 ".php" 포함) echo "[*] Bash를 통해 웹셸을 실행하여 탐지 원격측정을 생성 중..." /bin/bash -c "php $WEBROOT/malicious.php" # 3. 감사d가 로그를 플러시하도록 잠깐 대기 sleep 2 echo "[*] 시뮬레이션 완료. 다음에 대한 일치 여부를 SIEM에서 검토하십시오:" echo " process.name in (bash, sh, dash, jailshell) AND process.command_line contains '.php'" -
정리 명령:
#!/usr/bin/env bash set -euo pipefail WEBROOT="/tmp/webshell_test" echo "[*] 테스트 웹셸 디렉토리 제거 중..." rm -rf "$WEBROOT" echo "[*] 정리 완료."