2012년 7월 28일 토요일

해커 추적


Intrusion detection
 
언제까지 해커에게 당하고만 있을 것인가? 해커가 들어왔다면 추적을 해서 잡아내는 일 또한 중
요하다고 할 수 있다. 이제 해커를 추적하 는 방법에 대해 알아보기로 하자. 처음 시스템에 로그
인하게 되면 다음과 같은 메시지를 보낼 것이다.
 
 
login: sakai
password:
Last login: Fri Mar 3 02:05:42 on console
SunOS Release 4.1.3-KLE1.1.3 (BARAM_KOR) #2: Sun Sep 26 10:16:21 KST 1993
You have mail.
1995년03월03일(금) 03시10분34초 KST

 
여기에 나타나는 Last login을 확인하고 자신이 로그인한 시간대가 아닌 때에 로그인이 됐는가를
확인해 본다. 침입자가 들어온 것 같은 의심이 들 때 관리자에게 연락해 그 시간대의 로그와 프
로세스를 확인해 추적을 하도록 한다. 혹은 위와 같이 자신의 시스템 로그인 메시지를 확인하는
방법도 있지만, 다른 방법으로, last라는 명령을 이용, 자신의 시스템에 자신의 이름으로 들어온 유
저를 찾을 수도 있다. 다음은 last의 예이다.
 
last | more
 
ksh ttyqd casaturn.kaist.a Thu Mar 16 16:52 still logged in
chkim ttyr9 dal1.kaist.ac.kr Thu Mar 16 16:50 still logged in
hjha ttyqd danso.kaist.ac.k Thu Mar 16 16:49 - 16:51 (00:01)
hjha ttyra danso.kaist.ac.k Thu Mar 16 16:47 - 16:47 (00:00)
solee ttyra dangun.kaist.ac. Thu Mar 16 16:46 - 16:46 (00:00)
yjkim ttyr9 gaea.kaist.ac.kr Thu Mar 16 16:44 - 16:50 (00:05)
chkim ttyr9 dal1.kaist.ac.kr Thu Mar 16 16:42 - 16:43 (00:01)
drunken ttyra chagall.kaist.ac Thu Mar 16 16:40 - 16:40 (00:00)
shhong ttyra dbserver.kaist.a Thu Mar 16 16:39 - 16:39 (00:00)
jhlee ttyr9 paradise.kaist.a Thu Mar 16 16:38 - 16:39 (00:01)
hjha ttyra danso.kaist.ac.k Thu Mar 16 16:36 - 16:37 (00:00)
 
위의 예에서, last | grep myloginname을 입력하면, 자신의 ID로 언제 어디서, 누가 로그인했는지를
알 수 있게 된다. 숙련된 해커는 위의 last 정보가 유지된 시스템 파일을 지우고 가지만, 여기서는
비숙련 해커를 가정하고 명령을 쳐볼 수 있다. 또는 약 간은 먼 이야기이지만, 해커가 들어와서
어떤 일을 하고 갔는지를 알아내기 위해서는 lastcomm이 라는 명령어가 있다. lastcomm은 지금 이
시간까지 시스템에서 수행되었던 명령어들을 보여주게 된다. 만약에 lastcomm이 작동되지 않는다
면 시스템 관리자가 다음의 명령을 수행하도록 해야 한다.
(제가 리눅스에서 시행해 본 바 lastcomm명령어는 알아먹지도 못하더군요... 유닉스가 아니라서 그런가하는 생각도 듭니다... 아마도 따로 설정법이 있는 것 같은데 알아내면 이 way가 강좌에 꼭 올리겠습니다.
 
/usr/etc/accton /usr/adm/acct
 
lastcomm | more
msgs ksh ttyp2 0.03 secs Thu Mar 16 16:58
less ksh ttyp2 0.06 secs Thu Mar 16 16:58
csh F ksh ttyp2 0.00 secs Thu Mar 16 16:58
csh F ksh ttyp2 0.00 secs Thu Mar 16 16:58
date ksh ttyp2 0.02 secs Thu Mar 16 16:58
stty ksh ttyp2 0.02 secs Thu Mar 16 16:58
stty ksh ttyp2 0.02 secs Thu Mar 16 16:58
biff ksh ttyp2 0.02 secs Thu Mar 16 16:58
hostname ksh ttyp2 0.02 secs Thu Mar 16 16:58
whoami ksh ttyp2 0.03 secs Thu Mar 16 16:58
hostname ksh ttyp2 0.02 secs Thu Mar 16 16:58
hostname ksh ttyp2 0.02 secs Thu Mar 16 16:58
hostname ksh ttyp2 0.02 secs Thu Mar 16 16:58
 
전문된 해커와 이를 막는 보안팀은 항상 여러 가지 파일을 이용해서 보안을 체크하게 되며, last,
lastcomm은 하나의 시작에 불 과하다. 이 절의 내용을 정리하면, 시스템에 로그인하고 로그아웃하
면 그 기록이 어딘가 남는다는 것인데. 다음의 네 가지 파일 이 대표적이다.

/usr/adm/lastlog
각 유저마다 가장 최근의 로그인 시간을 기록한다.
finger 나 someone 에 의해 알 수 있다.
/etc/utmp
유저가 로그인할 때마다 시간을 적어둔다.

/usr/adm/wtmp
유저가 로그인/로그아웃할 때 시간을 적어둔다.
last 또는 last someone 의 명령을 쳐서 내용을 알 수 있다.

/usr/adm/acct
유저들이 사용하는 명령어를 적어둔다.
lastcomm 을 치면 내용을 알 수 있다.

 
하지만, 실제로 해커들은 이 모든 파일들을 지우고 나가는 것이 보통이며(생각을 보라, 나갈 때
자기가 들어왔다는 증거를 입멸 하고 나가는 것이 해커의 입장으로서는 당연한 것이 아니겠는가),
따라서 일정한 시간 간격마다 혹은 하루의 어느 때에 수행하도록 제어해주는 cron명령을 이용해
계속 위의 파일을 백업을 한다 면 해커를 좀더 어렵게 만들 수 있겠다. 이는 관리자에게 필요한
부분이지만, 안전한 호스트를 선택해 log만을 남기는 호스트를 두면 더욱 확실하다.(이는 물론 장
비에 여유가 있을 때의 이야 기이다) 예를 들면,
/etc/syslog.conf 에서 정의를 하도록 하자.
 
#
# syslog configuration file
#
define LOGHOST eve
*.err;kern.debug;auth.notice;user.none /dev/console
mail.debug ifdef('LOGHOST',/var/log/syslog,@loghost)
mail.debug /var/log/syslog
 
로그 호스트를 설정한 예를 들어보자. 다음 로그는 로그 호스트인 eldar 의 로그 파일에 기록된
것이다. elbereth, luthien, be ren, eru, frodo, sam, aragorn, gandalf, faramir, legolasgimli,
indigo1,3,4,10, applic이 eldar로 로그를 보 내도록 설정돼있다.
 
Mar 17 02:43:28 6C:eldar fingerd[17516]: connect from baikdu.kaist.ac.kr
Mar 17 02:43:42 6D:eldar ftpd[17518]: connection from baikdu.kaist.ac.kr
Mar 17 02:43:54 5E:eldar ftpd[17518]: FTP LOGIN FAILED FROM baikdu.kaist.ac.kr,
chester
Mar 17 02:44:15 6E:eldar ftpd[17518]: FTP LOGIN FROM baikdu.kaist.ac.kr as chester
Mar 17 09:37:16 6C:luthien.seri.re.kr sendmail[10578]: JAA10572: to=sysuh@kigam.re.kr,
ctladdr=news (15/15), delay=00:0 0:09, mailer=smtp, relay=sdp.kigam.re.kr.
[134.75.144.201], stat=Sent (JAA15213 Message accepted for delivery)
Mar 17 13:31:46 6B:frodo.seri.re.kr Xsession: poison: login
Mar 17 13:40:32 6C:gimli.seri.re.kr ftpd[533]: connect from eve.kaist.ac.kr
Mar 17 13:49:32 6D:indigo1.seri.re.kr ftpd[533]: connection from robin.kaist.ac.kr
 
 
이런 방법 외에도 파이어월, TCP wrapper 등을 이용해 아예 외부에서의 접근을 막아버릴 수 있
다. 물론 tcpdump나 netmon들을 사용해 자신의 호스트로의 모든 접근을 감시할 수도 있다. 이와
같이 방어하는 기술도 점점 고도 화가 되어 고 수준의 해커가 아니 면 침투하기 어려운 호스트가
늘어가고 있다.
그 무수한 버그들을 모두 머리에 외어두고 이를 모두 패치하기란 상당히 어려운 일이다.

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...