백 도어 (Back Door) 종류?
텔넷 백도어(telnetd backdoors)
사용자가 시스템에 텔넷 접속을 할 때, inetd 서비스가 그 포트를 in.telnet에 연결해 주고, in.telnet은 로그인 프로그램을 구동합니다. 어떤 침입자는 시스템 관리자가 로그인 프로그램을 수시로 점검하기 때문에 아예 in.telnetd을 수정하는 경우도 있습니다. in.telnetd는 사용자들로부터 터미널 종류 등 몇 가지 사항을 점검합니다. 일반적으로 터미널은 X텀(Xterm)이나VT100으로 설정 되어 있는데, 침입자는 터미널 종류가 letmein 등으로 특수하게 설정되어 있어 인증과업 없이 셸을 부여하도록 in.telnetd을 수정할 수 있습니다. 또한 침입자는 어떤 서비스에 백도어를 설치하여 특정 소스 포트로부터 오는 연결에 대해서는 셸을 부여하도록 할 수도 있습니다.
서비스 백도어(services backdoors)
대부분 네트워크 서비스들, 즉 finger, rsh, rexec, rlogin, ftp 심지어 inetd 등은 백도어 버전이 존재하는데, 이 프로그램들은 uucp와 같이 전혀 사용되지 않는 서비스를 백도어 프로그램으로 교체하여 inetd.conf 파일에 등록하는 경우도 있습니다. 관리자는 시스템에서 어떤 서비스들이 제공되고 있는지 항상 점검하고, 원래 서비스가 수정되지 않았는지 MD5 체크섬에 의해서 진단해야 합니다.
크론잡 백도어(cronjob backdoors)
크론잡(cronjob)은 유닉스 시스템에서 특정 프로그램을 특정 시간에 구동될 수 있도록 해줍니다. 침입자는 백도어 셸 프로그램을 크론잡에 추가하여 마치 크론잡에서 전형적으로 구동되는 합법 프로그램인 것처럼 가장해 새벽 시간에 구동하도록 설정한 시스템에 접속할 수 있습니다.
라이브러리 백도어(library backdoors)
대부분 유닉스 시스템에서는 공유 라이브러리를 사용합니다. 같은 루틴들을 재사용하여 프로그램의 크기를 줄이기 위해 공유 라이브러리를 사용하는데, 어떤 침입자들은 crypt.c나 _crypt.c 프로그램 같은 루틴들에 백도어 프로그램을 넣어 두기도 합니다. login.c는 crypt() 루틴을 사용하게 되는데 백도어 패스워드가 사용될 경우 바로 셸을 부여하게 됩니다. 관리자가 로그인 프로그램의 MD5를 점검한다고 하더라고 백도어 코드를 찾을 수 없고 대다수의 관리자가 백도어의 근원지를 찾아내기가 상당히 힘듭니다. 라이브러리 백도어에 대한 대책은 MD5 체크섬 점검기를 정적으로 연결하여 시스템에서 구동하는 것이며 정적으로 연결된 프로그램은 트로이목마의 공유 라이브러리를 사용하지 않습니다.
커널 백도어(kernel backdoors)
커널은 유닉스 시스템이 운용되는 핵심으로서, 라이브러리에서 사용되었던 같은 방법으로 MD5 체크섬을 우회할 수 있습니다. 잘 만들어진 백도어가 설치된 커널은 관리자가 찾기 가장 어려운 백도어입니다. 다행이 커널 백도어 스크립트들은 널리쓰이고 있지는 않지만 아무도 실제로 얼마나 배포되어 쓰이고 있는지 모릅니다.
파일 시스템 백도어(file system backdoors)
침입자는 서버로부터 획득한 전리품과 데이터들을 관리자에게 발각되지 않고 저장합니다. 침입자들이 저장하는 파일들은 일반적으로 해킹 스크립트의 도구박스, 백도어들, 스니퍼(sniffer) 로그들, 전자우편 메시지들과 같은 데이터, 소스코드 등이 있습니다. 침입자는 특정 디렉터리나 특정 파일을 숨기기 위해 'ls', 'du', 'fsck' 와 같은 시스템 명령어들을 수정합니다. 그렇지않으면 숨기려는 부분을 'bad' 섹트로 보이게 하고, 침입자는 숨겨진 파일을 오직 특수한 도구를 통해서만 보이게 할 수도 있습니다.
부트블록 백도어(bootblock backdoors)
일반 컴퓨터에서는 바이러스가 부트블록(bootblock)에 자신을 숨기고 대부분의 바이러스 백신은 부트블록이 바뀌었는지를 감시합니다. 유닉스 시스템에서는 부트블록을 점검할 수 있는 소프트웨어가 거의 없어서 침입자들이 부트블록 공간에 백도어를 숨겨두기도 합니다.
프로세스 은닉 백도어(process hiding backdoors)
침입자는 그들이 구동하고 있는 프로그램들을 숨기려고 하는데, 그들이 숨기려고 하는 프로그램들은 일반적으로 패스워드 크래커, 스니퍼 프로그램 등이 있습니다. 다음은 프로세스를 숨기는 몇가지 방법입니다.
1) 숨기려는 프로그램 자신의 argv[]를 수정하여 다른 프로세스 이름으로 보이도록 합니다.
2) 침입자는 스니퍼 프로그램을 in.syslog와 같은 합법적인 서비스로 이름을 바꿀 수 있습니다. 관리자가 'ps' 등으로 어떤 프로세스들이 구동되고 있는지 점검하면 정상적인 이름들이 나타나게 됩니다.
3) 침입자는 라이브러리 루틴들을 수정하여 'ps'가 특정 프로세스를 보여주지 못하게 할 수 있습니다.
4) 백도어 프로그램을 패치하거나 인터럽트 driven 루틴들을 삽입하여 프로세스 테이블에 나타나지 않도록 할 수 있습니다.
5) 커널을 수정하여 특정 프로세스를 숨기도록 할 수 있습니다.
'보안용어' 카테고리의 다른 글
SYN Flooding 공격 (0) | 2020.12.23 |
---|---|
백 도어(Back Door) - 3 (0) | 2020.10.26 |
백 도어 (Back Door) - 1 (0) | 2020.10.18 |
방화벽 (Firewall) (0) | 2020.10.16 |
COM 후킹 (Component Object Model Hooking) (0) | 2020.10.13 |
댓글