리눅스와 보안 PLUS 오태호
목차(1) 리눅스란? 리눅스가 최근 보안상 문제가 되는 이유 최근 외부 사용자 공격 유형 named를 이용한 공격 imapd를 이용한 공격 smbd를 이용한 공격
목차(2) 최근 리눅스 해킹사건 mscan imapd에 의한 해킹사건 named에 의한 해킹사건 리눅스 보안에 대한 대책
리눅스란? 핀란드에 있는 Linus Torvalds라는 대학생이 만든 PC에서 사용 가능한 UNIX clone 커널(kernel)의 소스가 완전히 공개되어 있고 PC에서 사용할 수 있기 때문에 해커가 애용하는 OS
리눅스가 최근 보안상 문제가 되는 이유(1) OS내부 구조가 완전히 공개되어 있음 리눅스 사용자의 급속한 증가 리눅스 커널(kernel)은 누구나 소스를 구해서 분석할 수 있음 리눅스 사용자의 급속한 증가 가격이 저렴함 성능이 뛰어남 사용방법이 쉬워짐 잡지사가 리눅스CD 배포에 기여 ^^;;
리눅스가 최근 보안상 문제가 되는 이유(2) 보안 구멍이 발견되면 그것을 이용한 공격 도구는 리눅스용이 가장 먼저 만들어 짐 * 참고사항 Alzza Redhat Linux 5.0 Patch man II 배포 1998년 3월 named(bind)버그 발표 (CERT) 1998년 4월 8일 named를 이용한 linux용 공격 도구 발견됨 1998년 5월 19일 named를 이용한 포항공대 공격 흔적 발견 1998년 7월 1일
최근 리눅스 외부 사용자 공격 유형(1) named imapd Redhat Linux 5.0에 포함 inverse query할 때 buffer overflow가능 CA-98.05.bind_problems 참고 imapd Redhat Linux 4.0에 포함 username을 입력 받을 때 buffer overflow가능 CA-97.09.imap_pop 참고
최근 리눅스 외부 사용자 공격 유형(2) smbd Redhat Linux 4.2에 포함 password를 입력 받을 때 buffer overflow가능
named를 이용한 공격(1) ADMw0rm evil victim1 victim2 자신을 /tmp/.w0rm0r에 저장 host정보를 /tmp/.X11x에 저장 w0rm계정 추가 /etc/hosts.deny삭제 자신을 실행 다른 host 공격 /tmp/.w0rm shell생성 w0rm으로 로그인 /tmp/.X11x를 index.html로 복사 자신을 전송받음 /tmp/.w0rm과 /var/log를 삭제 email을 보냄 로그아웃
named를 이용한 공격(2) Hnamed 외부 사용자가 쉘 명령어를 root권한으로 실행시킬 수 있음 한 번 실행하면 named가 crash되기 때문에 두 번 사용할 수 없음
imapd를 이용한 공격 imap offset의 값에 따라 buffer overflow를 위한 데이터가 생성 되서 standard output으로 출력 netcat을 이용해서 143port에 입력하면 외부 사용자가 임의의 쉘 명령어를 root권한으로 실행시킬 수 있음
smbd를 이용한 공격 ADMkillsamba buffer size와 offset size를 바꿔서 계속 시도해서 성공하면 목표 호스트에서 root권한으로 실행시킨 xterm이 공격 호스트에 나타남 ADMkillsamba를 이용해서 호스트를 공격하려면 패스워드를 비정상적으로 길게 보낼 수 있는 smbclient가 필요함
mscan 다수의 호스트에 대해 최근에 알려진 몇 가지 보안 취약점을 외부에서 검사해서 알려 주는 프로그램 예) mscan -z postech.ac.kr -a > mscan.log
imapd에 의한 해킹사건(1) 이탈리아의 정체불명의 해커가 포항공대의 x***를 imapd의 버그를 이용 해킹한 사건
imapd에 의한 해킹사건(2) x***에서 해커가 한 행동 /etc/passwd 에 dark라는 id를 추가함 /.bash_history를 /dev/null로 링크시킴 /etc/securetty를 수정해 외부에서 superuser접속 허용하게 함 /tmp 에 zgr, bnc를 설치 zgr은 /var/log/wtmp, /var/run/utmp, /var/log/lastlog에서 특정 사용자의 기록을 지움 (진짜 이름은 Zap2)
imapd에 의한 해킹사건(3) 미국 www.g***.org의 파일 시스템을 mount해서 해킹 시도 bnc는 irc를 사용할 때 자신의 위치를 숨길 수 있게 해 주는 프로그램 미국 www.g***.org의 파일 시스템을 mount해서 해킹 시도 국내 K대학에 있는 k***에 imapd를 이용해 해킹해서 k***에서 스니퍼(sniffer)를 사용해 k***주변 사용자의 id와 password를 알아냄 이때 top과 ps를 자신의 프로그램으로 바꿔서 sniffer가 top이나 ps로 확인이 불가능하게 만들었음
imapd에 의한 해킹사건(4) 일본 N대학의 s***을 해킹 시도 국내 C대학의 t***를 imapd를 이용해 해킹해서 국내 K대학에서 한 것과 같은 행동을 함 dark라는 id를 사용하는 이 해커는 1998년 5월 29일부터 6월 23일까지 거의 매일 이탈리아의 ISP를 통해 포항공대 x***에 접속해서 다른 여러 곳을 해킹함
imapd에 의한 해킹사건(5) 해커수사대에 신고 x***에 dark가 다시 들어오지 못하게 하고 사건을 마무리 함
named에 의한 해킹사건(1) 멕시코에 있는 I대학 j***에서 포항공대 전체 호스트를 mscan을 이용해 조사한 흔적 발견 1998/06/29 PLUS에서는 mscan으로 조사해서 위험한 결과가 나온 호스트에 named, imapd등의 버그를 빨리 패치할 것을 긴급 지시 1998/07/01
named에 의한 해킹사건(2) named를 아직 패치하지 않았던 호스트 중 4개의 호스트에서 해커가 해킹한 흔적 발견 1998/07/02 4개의 호스트를 해킹한 해커는 모든 호스트를 같은 방법으로 해킹했고 해킹에 성공한 후의 행동으로 미루어 봐서 동일범으로 추정됨
named에 의한 해킹사건(3) 해커가 4개의 호스트에서 한 행동 password가 null인 kaka라는 id와 root권한을 가진 rewt라는 id를 /etc/passwd에 추가 named를 패치해서 다른 해커가 named를 이용해서 해킹하지 못하게 함 warchild rootkit을 s***.co.nz에서 ftp로 받아와서 /dev/xdd21에 설치 자신이 행동한 모든 기록을 삭제
named에 의한 해킹사건(4) warchild rootkit 인터넷에서 구할 수 있는 rootkit을 warchild라는 별명을 가진 사람이 개조한 것으로 추정됨 chfn, chsh, dir, du, in.idserv, in.inetd, in.rshd, ifconfig, login, ls, netstat ,passwd, ps, pstree, syslogd, tcpd, top, vdir로 구성되어 있음
named에 의한 해킹사건(5) 프로그램을 설치할 때는 기존 프로그램과 시간을 똑같이 해서 프로그램이 바뀐 사실을 알기 힘들게 하며 나중에 정리를 하기 위해 uninstall정보도 저장 프로그램의 설치가 모두 끝나면 더 이상 필요 없게 된 프로그램은 모두 삭제
named에 의한 해킹사건(6) warchild rootkit의 프로그램별 분석 ps, pstree, top : /dev/edc1에 등록되어 있는 프로세스를 보이지 않게 함 netstat : /usr/src/linux/arch/alpha/lib/.lib/.1addr에 등록되에 있는 주소를 보이지 않게 함 dir, du, ls, vdir : /dev/edc3에 등록되어 있는 파일을 보이지 않게 함
named에 의한 해킹사건(7) syslogd : /dev/edc4에 등록되어 있는 기록을 기록하지 않음 ifconfig : 스니퍼를 실행시키고 있다는 사실을 보이지 않게 함 in.idserv : 스니퍼의 일종으로 스니퍼 결과는 /dev/xdd21/wrksn1ff에 저장됨 login : id에 m***, password에 ***a로 입력하면 root로 로그인됨
named에 의한 해킹사건(8) in.inetd : 510 port에서 기다리는 서버로서 password를 입력 받은 후 rootshell을 spawn함 나머지 프로그램들은 아직 어떤 역할을 하는지 자세히 모르겠음 이번 해킹 사건은 PLUS의 빠른 대응으로 인해 조기에 공격을 막을 수 있었지만 해킹을 당한 시스템 관리자들의 너무 성급한 대응으로 해커 추적에는 실패함
리눅스 보안에 대한 대책(1) named의 빠른 패치 imapd의 빠른 패치 /etc/rc.d/init.d/named stop chmod 000 /usr/sbin/named imapd의 빠른 패치 vi /etc/inetd.conf imap으로 시작하는 행을 찾아서 #로 comment처리 한다. Killall -HUP inetd
리눅스 보안에 대한 대책(2) smbd의 빠른 패치 mscan으로 scan을 당했을 때 남는 기록 /etc/rc.d/init.d/smb stop chmod 000 /usr/sbin/smbd mscan으로 scan을 당했을 때 남는 기록 /var/log/secure에 기록이 남음 Jul 5 11:50:48 victim imapd[8580]: connect from 141.223.**.** Jul 5 11:50:48 victim ipop3d[8581]: connect from 141.223.**.** Jul 5 11:50:48 victim in.telnetd[8582]: connect from 141.223.**.**
리눅스 보안에 대한 대책(3) password가 null인 계정은 만들지 않음 항상 최신의 프로그램을 사용 필요 없는 프로그램은 사용하지 않음 보안 관련 공지를 자주 확인 http://www.redhat.com/support/docs/rhl/ 자신의 컴퓨터를 해킹해도 해커가 얻을 것이 없다는 생각을 하지 않음