2. DLL Hijacking

2023. 3. 29. 15:03·System/침투

출처: MITRE ATT&CK

 

DLL Hijacking

Tactics: 지속(Persistence), 권한 상승(Privilege Escalation), 방어 회피(Defense Evasion)

Mitigations: 감사(Audit), 실행 방지(Execution Prevention)

 

 

라이브러리란?

- 코드 내 반복되는 기능을 매번 작성하기 귀찮으니.. 해당 로직들을 따로 모아둔 파일이다. 표준화된 함수와 데이터 타입들을 만들어둔 것.

- 링커에 의해 링크될 수 있도록 보통 컴파일된 형태인 목적코드(object code) 형태로 존재하며, 컴파일 되어 있기 때문에 컴파일 시간이 단축.

- 해당 파일을 include 시 자유롭게 사용 가능함.

- 크게 동적 라이브러리와 정적 라이브러리로 나뉜다.

 

 

구분 특징
정적 연결
라이브러리
(.lib)
컴파일되는 시점에 해당 라이브러리 내 함수들이 복사되어 Main 코드와 결합됨.
(장점)
- 만들어진 실행 파일만 전달하면 되기에.. 런타임 시 외부 참조 가 없어 속도가 빠르며, 이식성이 좋다.
- 시스템 환경이 변해도 응용에 아무 영향도 없음.
- 완성된 응용을 안정적으로 사용 가능
(단점)
- 같은 코드를 가진 여러 응용 실 시 코드 중복으로 인해 메모리 낭비
- 라이브러리 변경 시 응용을 다시 재배포해야 함.
동적 연결
라이브러리
(.dll)
프로그램 실행 시 dll파일을 필요 때 호출. 즉, 실행 파일과 동적 라이브러리 파일은 독립적으로 존재함.
(장점)
- 각 응용이 한번 메모리에 올려진 것(dll)을 공유하므로 메모리 사용공간이 정적 라이브러리에 비해 적다.
- 라이브러리의 업그레이드가 쉬움 (유지보수 또한 쉽다.)
- 서로 다른 언어를 사용하는 응용이라도 함수 호출 규칙만 따른다면 동일 dll 호출이 가능
(단점) 외부 의존도 ▲ (이식성이 나쁨)

 

 

 

동적 연결 라이브러리(DLL, Dynamic-Link Libraries)의 검색 순서

DLL은 데이터와 실행가능한 코드의 모음을 의미한다.

SW 개발 시 DLL을 이용함으로써 쉬운 SW 업데이트와 응용 간 DLL파일코드공유를 통한 메모리 사용률 감소를 기대할 수 있다.

 

이러한 DLL을 로드할 때 절대경로가 지정되어 있다면 경로를 통해 DLL을 찾지만, 절대경로가 지정되어 있지 않을 때 Windows가 사용하는 DLL 검색 순서(DLL Search order)가 존재한다.

 

 


DLL 검색 우선순위

DLL 검색 우선순위는 옵션 사용 유무, Known DLL List의 유무, Safe DLL 검색 모드의 활성화 유무에 따라 달라진다.

 

[옵션] 응용프로그램이 해당 방법을 사용하지 않는 경우 해당 없음

① SxS(Side By Side Assembly) 파일에서 지정된 폴더 안의 DLL 파일

② DLL Redirection에 의해 지정된 폴더에 있는 DLL 파일

③ IpPathName이 가리키고 있는 폴더의 DLL 파일

------------------------------------

[Known DLL List가 존재하는 경우 -  레지스트리]

④ Known DLL File

------------------------------------

[SafeDLLSearchMode 비활성화 일 경우]

⑤ Directory of the Application

⑥ Current Directory

⑦ System Directory

⑧ 16bit System Directory

⑨ Windows Directrory

⑩ Directory in PATH value

 

[SafeDLLSearchMode 활성화 일 경우.(Default)]

⑤ Directory of the Application

⑥ System Directory

⑦ 16bit System Directory

⑧ Windows Directrory

⑨ Current Directory

⑩ Directory in PATH value

 


 

만약 DLL 로드 시 절대경로를 지정하지 않았다면, 이를 악용하여 공격자는 검색 순서를 가로채 자체 악의적인 페이로드가 실행되도록 할 수 있는데.. 이를 DLL Hijacking 이라 한다. = DLL Search Order Hijacking

 

DLL Search Order Hijacking은 DLL preloading 또는 Binary Planting Attack이라고도 불린다.

 

 

Process

① 공격자는 응용에 의해 요구되는 DLL의 위치보다 우선순위가 높은 디렉토리에 trojan dynamic-link library files을 저장하여 자신의 파일이 로드되는 것을 유도한다.

 

② Windows는 절대경로가 설정되어 있지 않은 DLL 로드 시 우선순위대로 검색을 수행하고 결국 공격자의 악의적인 파일을 수행한다.

 

또는 DLL redirection을 통해 Seach Order(검색 순서)를 직접 수정하는 방법도 있다. 이 기법은 DLL 검색 우선순위 순서에서 2번째에 해당하기에 공격자가 의도한 악의적인 파일을 로드할 수 있는 것.

 

③ 취약한 검색 우선순위 순서를 가진 응용 프로그램이 높은 권한 레벨에서 실행되도록 구성되었다면, 공격자가 심어둔 악의적인 DLL 또한 높은 권한 수준에서 실행된다.

→ admin 또는 SYSTEM으로의 권한 상승이 가능하다는 의미

 

④ 악의적인 DLL 파일이 사용자가 요구했던 정상 DLL을 로드하도록 설정되어 있기에, hijacking의 대상이 되는 프로그램은 정상적으로 동작하는 것처럼 보일 수 있다.

 

 

Detection

파일 시스템에서 발생하는 DLL 이동, 이름 변경, 교체 및 수정을 모니터링함으로써 해당 공격을 탐지할 수 있다.

- 기존에 존재하던 소프트웨어, 패치 등과 관련없는 프로세스에 의해 로드되는 DLL 세트의 변경을 로깅

- 프로세스에 의해 로드되는 DLL을 모니터링하고, 파일이름은 같으나 비정상적인 경로를 가진 DLL을 탐지

- 소프트웨어 업데이트와 관련없는 .manifest 및 .local redirection 파일의 수정 및 생성을 로깅

 

저작자표시 (새창열림)

'System > 침투' 카테고리의 다른 글

DLL Hijacking 실습 (3)  (0) 2023.03.30
DLL Hijacking 실습 (1)  (1) 2023.03.29
1. Process Hollowing이란?  (0) 2023.03.29
UAC bypass 실습하다가 컴날림  (1) 2022.07.15
AV 엔진 우회 2  (0) 2022.06.11
'System/침투' 카테고리의 다른 글
  • DLL Hijacking 실습 (3)
  • DLL Hijacking 실습 (1)
  • 1. Process Hollowing이란?
  • UAC bypass 실습하다가 컴날림
병뚜
병뚜
열정!
  • 병뚜
    열려라 뚜껑
    병뚜
  • 전체
    오늘
    어제
    • all (372)
      • 일상X사랑X돈 (0)
        • 보안이슈 (114)
        • 뜨거운감자 (9)
        • 맛집 (2)
        • 혼잣말 (16)
      • 보안 (87)
        • 웹·모바일 (46)
        • 인프라 (19)
        • 리버싱 (8)
        • Security-Gym (10)
        • 리뷰 (4)
      • 프로그래밍 (66)
        • python (14)
        • java (12)
        • js (40)
      • System (47)
        • OS (14)
        • 침투 (33)
      • Play (20)
        • wargame (20)
      • 기타 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    IT뉴스
    혼공파
    드림핵리버싱
    악성코드
    혼공단
    정보보안교육
    뉴스요약
    파이썬입문
    랜섬웨어
    파이썬공부
    it이슈
    커널디버깅
    혼공학습단
    프로세스
    자바스크립트 상속
    혼자공부하는파이썬
    파이썬초보
    리버싱초보
    혼공
    공급망공격
    보안뉴스
    윈도우인터널스
    리버싱
    kisa
    파이썬
    windows internals
    보안이슈
    정보보안
    정보보호
    jwt
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
병뚜
2. DLL Hijacking
상단으로

티스토리툴바