Linux와 보안

Download Report

Transcript Linux와 보안

리눅스와 보안
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
– 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
자신을 /tmp/.w0rm0r에 저장
w0rm계정 추가
w0rm계정 추가
/etc/hosts.deny삭제
/tmp/.w0rm shell생성
w0rm으로 로그인
자신을 전송받음
email을 보냄
victim2
named를 실행
host정보를 /tmp/.X11x에 저장
자신을 실행 다른 host 공격
/tmp/.X11x를 index.html로 복사
/tmp/.w0rm과 /var/log를 삭제
로그아웃
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
을 사용해 포항공대를 공격하려는 시도
를함
• 예) mscan -z postech.ac.kr -a > mscan.log
imapd에 의한 해킹사건(1)
• 이탈리아의 정체불명의 해커가 포항공대
의 x***를 imapd의 버그를 이용 해킹한
사건
• 별다른 피해는 주지 않았지만 x***를 중
간 경유지로 삼아서 다른 여러 곳을 해킹
함
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)
• 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의 빠른 패치
– /etc/rc.d/init.d/named stop
– chmod 000 /usr/sbin/named
• imapd의 빠른 패치
– vi /etc/inetd.conf
• imap으로 시작하는 행을 찾아서 #로 comment처
리 한다.
– Killall -HUP inetd
리눅스 보안에 대한 대책(2)
• smbd의 빠른 패치
– /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/
• 자신의 컴퓨터를 해킹해도 해커가 얻을
것이 없다는 생각을 하지 않음