정보보안/정보

[해킹기법과 대응] ⑥ 백도어와 트로이목마 (2)

Huikyun 2009. 2. 25. 00:40

1. UNIX 시스템

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

가장 고전적인 침입 방법으로 백도어들은 패스워드 크래커를 실행하여 취약한 패스워드를 가진 계정을 알아 내고, 이 계정의 패스워드를 어려운 계정으로 바꾸어 버려 취약한 패스워드를 찾아 변경할 수 없는 상태로 만든다.

2) Rhosts + + 백도어

네트워크에 연결된 유닉스 시스템에서 사용 편의성 때문에 사용하고 있는 R Command(rsh,rlogin)등의 서비스를 많이 사용하는데 호스트 이름과 사용자 명에 대한 추가적인 패스워드를 묻지 않는 보안 취약성을 내재 하고 있어 이를 이용한 "rhosts" 파일에 파일에 "+ +"를 넣어 어떤 호스트의 어떤 사용자라도 해당 사용자로 패스워드 없이 들어올 수 있도록 한다.

3) Checksum과 Timestamp 백도어

침입자들이 실행파일을 자신의 트로이목마 버전으로 교체시키는 경우가 있다. 많은 시스템 관리자들은 타임 스탬프와 유닉스의 sum 프로그램 등과 같은 체크섬 값에 의해 실행파일의 변경유무를 진단할 수 있다. 하지만 트로이목마 프로그램의 타임 스탬프를 원래 파일의 타임 스탬프 값으로 생성시킬 수 있고, CRC 체크섬 값도 원래의 체크섬 값으로 가장할 수 있다.

4) Login 백도어

유닉스 시스템에서 login 프로그램은 사용자가 텔넷을 통해 시스템에 접속할 경우 패스워드 인증을 수행한다. 침입자들은 login.c 프로그램을 수정하여 특정한 백도어 패스워드가 입력될 경우 관리자가 어떤 패스워드를 설정해 놓든지에 상관없이 로그인을 허용하고, utmp나 wtmp와 같은 로그파일에 기록도 하지 않도록 한다.

침입자는 침입한 흔적을 남기지 않고 시스템에 로그인하여 쉘을 획득할 수 있다. 시스템 관리자는 "strings"라는 명령어를 사용하여 login 실행 프로그램에 백도어 패스워드의 유무를 점검하기도 하지만, 침입자들은 백도어 패스워드를 암호화하여 저장함으로써 이러한 명령어에 의한 발견을 피할 수 있다.

5) Telnetd 백도어

사용자가 시스템에 텔넷 접속을 할때, inetd 서비스가 그 포트를 리슨하고 있다가 in.telnetd에 연결시켜 주고, in.telnetd는 login 프로그램을 구동한다. ( in.telnetd를 수정하는 경우도 있다.) 침입자는 터미널 종류가 "letmein" 등 특수하게 설정되어 있을 경우 인증과정 없이 쉘을 부여하도록 in.telnetd를 수정할 수 있다. 침입자는 어떤 서비스에 백도어를 설치하여 특정 소스 포트로 부터 오는 연결에 대해서는 쉘을 부여하도록 할수 있다.

6) Services 백도어

대부분의 네트워크 서비스들 즉, finger, rsh, rexec, rlogin, ftp 심지어 inetd 등은 백도어 버전이 존재한다. 이 프로그램들은 uucp와 같이 전혀 사용되지 않는 서비스를 백도어 프로그램으로 교체하여 inetd.conf 파일에 등록하는 경우도 있다.

7) Cronjob 백도어

침입자는 백도어 쉘 프로그램을 cronjob에 추가하여 특정 시간에 구동 되도록 할 경우 이 시간 동안 침입자는 시스템에 접속 할 수 있다. 침입자는 cronjob에서 전형적으로 구동되는 합법적인 프로그램인 것처럼 가장한다.

8) Library 백도어

대부분의 유닉스 시스템에서는 공유 라이브러리를 사용한다. 공유 라이브러리는 같은 루틴들을 재사용하여 프로그램의 크기를 줄이기 위해 사용한다. 어떤 침입자들은 crypt.c나 _crypt.c 프로그램 같은 루틴들에 백도어 프로그램을 넣어 두기도 한다. login.c는 crypt() 루틴을 사용하게 되는데 백도어 패스워드가 사용될 경우 바로 쉘을 부여하게 된다.

9) Kernel 백도어

Library에서 사용되었던 같은 방법으로 MD5 체크섬을 우회할 수 있으며 이 백도어가 설치된 커널은 관리자가 찾기 가장 어려운 백도어일 것이다. 다행히 커널 백도어 스크립트들은 널리 쓰이고 있지는 않지만 아무도 실제 얼마나 배포되어 쓰이고 있는지 모른다.

10) 파일 시스템 백도어

침입자는 특정 디렉토리나 특정 파일을 숨기기 위해 "ls", "du" 그리고 "fsck"와 같은 시스템 명령어들을 수정한다. 그렇지 않으면, 숨기려는 부분을 "bad" 섹트로 보이게 하고, 침입자는 숨겨진 파일을 오직 특수한 도구를 통해서만 보이게 할 수도 있다.

11) Bootblock 백도어

일반 PC에서는 바이러스가 bootblock에 자신을 숨기고 대부분의 바이러스 백신은 bootblock이 바뀌어졌는지를 감시한다. 유닉스 시스템에서는 부트 블록을 점검할 수 있는 소프트웨어가 거의 없어, 침입자들이 부트 블럭 공간에 백도어를 숨겨두기도 한다.

12) 프로세스 은닉 백도어

침입자들은 자신들이 설치하여 실행중인 프로그램들 숨기려고 한다. 일반적으로 스니퍼 프로그램이나 키로거, 패스워드 크랙 프로그램과 같은 것들을 보이지 않도록 한다.

13) 네트워크 트래픽 백도어(Network traffic backdoors)

침입자들은 시스템에서 자신들의 흔적을 숨기려고 할 뿐더러 가능하면 자신들의 네트워크 트래픽까지 숨기기를 원한다. 이러한 네트워크 트래픽 백도어들은 간혹 침입차단시스템(firewall)을 거쳐서 침입할 수 있는 것들도 있다.

14) TCP 쉘 백도어

침입자는 침입차단시스템이 막지 않는 높은 TCP 포트에 TCP 쉘 백도어들을 설치할 수 있다. 관리자들은 netstat를 통해서 어느 포트들이 연결을 기다리고 있고, 어느 포트가 연결되어 있는지를 점검할 수 있다. 이러한 백도어들은 SMTP 포트 상에서 구동될 수도 있어, e-mail을 허용한 침입차단 시스템을 통과할 수 있다.

15) UDP 쉘 백도어

관리자들이 TCP 연결에 대해서는 관리를 잘하고 이상한 행위를 알아차리기가 쉽지만, UDP 쉘 백도어는 유닉스 시스템에 접속한 상태를 netstat 등으로 알기가 쉽지 않다. 많은 침입차단시스템에서 DNS 서비스등을 위해 UDP 패킷들을 허락하도록 설정되어 있어 침입자는 UDP 백도어를 설치하여 침입차단 시스템을 무사히 통과할 수 있다.

16) ICMP 쉘 백도어

많은 침입차단시스템들이 외부로부터 내부 시스템에 대한 ping을 허락한다. 침입자는 ping ICMP 패킷에 데이터를 추가하여 ping을 하고있는 시스템과 쉘을 제공받을 수 있도록 한다. 시스템 관리자는 다량의 ping 패킷들을 발견하겠지만 패킷 속의 데이터를 보지 않는 이상 침입 사실을 알수 없다.

17) 암호화된 링크

관리자가 스니퍼를 설치하여 쉘에 접근하려는 사람을 찾으려고 할 수 있다. 하지만 침입자는 네트워크 트래픽 백도어를 암호화하여 실제 두 시스템 간에 어떤 데이터가 전송되고 있는지를 숨길 수 있다.


2. Windows 시스템

1) BackOrifice

대표적인 트로이목마 프로그램이다. 백오리피스는 'Cult of Dead Cow(죽은 소에 대한 숭배)'라는 해커 그룹의 일원인 Sir Dystic이 제작 발표한 MS 윈도 95/98 및 윈도 NT 해킹 툴로, 마이크로소프트(MS) 네트워크 관리 프로그램 백오피스를 패러디해 붙여진 이름이다.

백오리피스는 MS Back Office와 마찬가지로 원격지에서 윈도용 PC의 모든 프로그램 컥舅?관리할 수 있는 도구이기 때문에, 원격지에 있는 타인의 PC에 저장된 파일에의 접근은 물론이고 파일 삭제, 생성, 실행 등 PC 이용자 모르게 프로그램 및 파일에 대한 조작을 할 수 있다. 또한 실행 중인 프로그램의 제거 및 정지, 사용자 키보드 입력 자료의 모니터링, 현재 실행중인 화면캡처, 비밀번호 빼내기, 레지스트리 편집 등이 가능하다.

위와 같은 기능들을 수행하는 대표적인 트로이목마 프로그램으로는 SubSeven, Netbus, SchoolBus등으로 현재까지 많은 수의 프로그램이 존재 한다. 주요 트로이 목마의 사용 포트는 아래와 같다.

포트번호 트로이목마명
777 AimSpy
1080 SubSeven 2.2, WinHole
1243 BackDoor-G, SubSeven
5880 Y3K RAT
6000 The Thing
6666 Dark Connection Inside, NetBus
6667 Dark FTP, ScheduleAgent, SubSeven, Subseven 2.1.4 DefCon 8, Trinity, WinSatan
6669 Host Control, Vampire
9400 InCommand
12345 Fat Bitch trojan, GabanBus, NetBus, NetBus Toy, Whack Job, X-bill
20034 NetBus 2 Pro, NetBus 2.0 Pro Hidden, NetRex, Whack Job
21554 GirlFriend, Exploiter, Kid Terror, Schwindler, Winsp00fer
27374 SubSeven, Bad Blood, Ttfloader, Webhead
31337 Netpatch, Back Orifice, Baron Night, BO client, BO spy
50766 Fore, Schwindler
54321 Backorifice 2000, School bus

출처 : (주)코코넛 시큐레터 2004년 2월호