인터넷과 시스템 보안
여기에서는 각 단계별로 필요한 보안 기술에 대해 다뤄보겠다.
그 좋은 예로 SunOS 4.1.x 대에서 존재했던 ypupdated 의 버그를 악용하여 침입 을 하는 경우 rpc call 을 사용한 프로그램을 악용하여 remote 의 사용자가 target host 의 root 권한의 명령을 원격으로 실행시킬 수 있었다. 이 프로그램을 slammer 라 하는데 만일 slammer 를 이용하여
echo intruder::0:1::/:/bin/csh >> /etc/passwd 라고 명령을 실행시켰다면 targethost 의 패스워 드를 모르더라도 직접 root 권한을 얻을 수 있게 되는 것이다.
또한 Sendmail 의 버그가 존재했던 경우 smtp 포트 상에서 명령을 주어 /etc/passwd 화 일을 가져 올 수가 있었으며, 심지어는 특정포트에 접속하는 경우 interactive shell 이 invoking 되도록 조작할 수도 있었다.
이 경우 몇몇 로그 화일은 변조되었는지 여부를 다음의 툴을 사용하여 체크해 낼 수 있다.
location: ftp://ftp.cert-kr.or.kr/pub/tools/etc/chkacct
location: ftp://ftp.cert-kr.or.kr/pub/tools/etc/chklastlog
location: ftp://ftp.cert-kr.or.kr/pub/tools/etc/chkwtmp
# ls -aslRg / > list_of_system_old
# ls -aslRg / > list_of_today
# diff list_of_system_old list_of_today
그렇기 때문에 관리자들도 부지런히 이에 관련된 정보들을 얻어야 한다. 또한 정보를 얻는데 그치지 말고 OS vendor 나ㅓ, Security TFT 들이 제공하는 patch 를 받아서 설치해야 한다.
다음과 같은 뉴스그룹 및 메일링 리스트를 활용하기 바란다.
이런 경우 system 들의 중요한 화일들의 checksum 들을 비교하여 변조되지 않았는가를 체크해 본다.
또 해커의 침입을 발견하고 , 해킹현장을 목격했을 경우, 또는 로그화일을 통하여 범인이 누구인지 알게 된 경우 어떻게 대처할 것인지를 미리 rule 로 정해두어서 실수하는 일이 없도록 한다.
해커들이 침입하고 나간 경우 재침입의 용의를 위해 backdoor 를 설치해 놓았을 가능성이 많다. 이 backdoor 를 찾아보는 것이 중요하다.
# find / -perm -4000 -print
해커들이 보통 찾기 힘든 화일이름으로 숨겨 놓고 가는 경우가 많다.
e.g. " " , /usr/man/man6/bash.6 , ".. "
간혹 미숙한 해커들의 경우 트로이 목마로 설정한 /bin/login 에서 스트링 컨트롤을 잘못하여 특정패스워드가 보이는 경우가 있다. 이런 경우 strings /bin/login 을 이용하여 찾아낼 수 있다.
하지만 이러한 방법들은 다른 문서상에서 많이 접할 수 있는 것들이므로 생략하기로 한다 .
현재 국내에서 가장 많이 사용되고 있는 OS 는 Solaris 2.x 이다. Solaris 2.3 이하 버전까지만 해도 상당히 OS 가 heavy 하며, 버그도 SunOS 보다는 적지만 상당히 치명적인 버그가 많이 존재하여서 문제가 되었다. Solaris 2.4 에서는 보안에 상당히 신경을 많이 쓴 것이 확연히 느껴졌지만 여전히 치명적인 버그가 존재하였고, Solaris 2.5 는 8lgm 팀들의 베타테스팅 을 거쳤음에도 불구하고 치명적인 버그가 발견이 되었다. 이제 이 버그들에 대해 알아보도록 하자.
이런 문제가 존재하는 프로그램들의 예로 dmesg, ff.core 등이 있다.
위의 3 가지 모두 프로그램이 작동할 때 생성되는 임시화일들 및, lock 화일 들에 대한 컨트롤을 제대로 하지 못하여 시스템 내부에 임의로 화일을 생성시킬수 있 는 문제점을 가지고 있다.
기본적으로 IRIX 호스트 간의 연결시 DISPLAY 변수가 remotehost:0 으로 셋팅이 되어 버린다. 또한 기본적으로 Xhost + 의 상태로 되어 있으므로 /var/X11/xdm 에서 xhost + 를 허가하는 부분을 모두 제거해야 한다.
OS install 직후 null password 상태로 되어 있고 shell access 를 허가 하는 ID 가 존재한다. (e.g. guest, lp, EZsetup, tutor...) /etc/passwd 의 2 번째 필드를 lock 해줄 필요가 있다.
sgihelp 를 호출하는 프로그램이 setuid root 프로그램일 경우 root 권한으로 특정 명령들을 실행시킬 수 있는 문제가 있다.
/usr/sbin/colorview 는 setuid root 프로그램이다. 이 프로그램을 이용해서 시스템 내의 어떠한 화일이라도 읽을 수 있게 된다. (-text 옵션 사용)
sgihelp 를 호출하여 root 권한으로 명령을 실행시킬 수 있는 문제점이 있다.
임의의 화일의 퍼미션을 일반 유저도 바꿀 수 있는 문제점이 있다.
YP snarfing 은 NIS 를 돌리고 있는 경우에 외부의 호스트에서 인증절차 없이 passwd , passwd.adjunct 와 같은 치명적인 화일들을 가져 올 수 있는 기법이다. YP snarfing 을 하는 과정에서 Domain name guessing 기법은 필수적으로 요구된다.
Slammer 는 RPC call 을 이용하는 경우로서 외부에서 target host 의 root 권한 명령을 실행시킬수 있다는 문제점이 있다. 원래는 상당수준에 이른 해커들만이 구사 할 수 있었으나 해킹프로그램이 배포되어 많은 저급해커들도 구사를 하고 있다.
IP Spoofing 은 IP 를 target host 가 trust 하는 호스트의 IP 인 것으로 위장하여 침입을 하는 방법으로서 상당한 기술이 요구된다.
NFS File handle guessing 은 remote host 에서 NFS 를 돌리고 있는 target host 의 화일시스템 안에 원하는 퍼미션의 원하는 화일을 임의로 생성시킬수 있도록 하는 것으로서 target host 의 내 부에 버그가 없는데 NFS 를 돌리고 있는 경우 해커가 root 권한을 얻기위해 사용하곤 한다. 그래서 속칭 "후방지원" 프로그램으로 불리기도 한다.
nuking 은 그렇게 치명적인 기법은 아니지만 ICMP 패킷들을 조작하여 전송하는 기법으로 다른 사용자의 connection 을 끊어버릴 수 있다.
하지만 이 취약점들로 인해 많은 문제를 낳고 있기 때문에 우리는 security 에 관해 알아야 하고 끊임없이 관심을 가져야 한다.
조금만 신경을 쓰면 시스템을 침입자들로부터 안전하게 지킬 수 있게 된다. 지금 많은 관리자들의 관심과 노력이 요구되는 실정이다.
고로, 해킹을 할 줄 안다고 하여 그것이 자랑거리가 될 수 없고, 자신의 실력이 뛰어나다고 말 할 수 있는 근거는 미비하다. 또 생겨난 버그는 OS 버전이 올라가면 사라지기 마련인데 존재하는 버그를 악용해서 시스템을 파괴하고, 자신의 시간과 정열을 파괴하기 보다는 이 욕구를 양성적인 분야로 돌려 많은 공헌을 하기를 권하고 싶다.