해킹? sshd 접속 불가 & su 문제

raymundo의 이미지

서버호스팅을 받는 서버가 하나 있고, 레드햇9가 설치되어 있습니다.

그런데 오늘 갑자기 ssh 접속이 되지 않고 있습니다. 아이디와 암호를 묻는 것까지는 되는데, 암호가 맞으면 (틀리면 정상적으로 암호를 다시 물어봄) 바로 closed by remote host 가 되어 버립니다.

/var/log/secure 파일을 보면

Jan  7 23:38:01 ****(호스트이름) sshd[28736]: Accepted password for *****(제 계정 아이디) from 218.**.**.** (제IP) port 2965
Jan  7 23:38:01 ****(호스트이름) sshd[28738]: fatal: Failed to set uids to 504 (제 uid).

위와 같이 나오고, sshd 를 재실행한 것으로는 효과가 없었습니다.

그래서 어쩔 수 없이 telnet 으로 접속했는데 (맘같아서는 telnet이나 ftp서비스는 아예 막아버리고 싶은데, ssh나 sftp를 도저히 쓸 줄 모르는 사람들이 같이 이용하고 있어서 못 그럽니다 ㅠ,.ㅠ)

접속한 후에 루트가 되려고 su 를 했더니만, 암호를 묻지 않고 바로 통과해 버립니다!! -,.-;;;

/var/log/secure 파일을 보면, 해킹 프로그램인 걸로 보이는 것이 계속 사전에 있는 단어로 아이디를 구성해서 접속 시도했다 실패하는 것은 군데군데 보이는데 그건 그냥 실패하고 끝난 것 같고요. 그 외에는 뭘 봐야 될지 모르겠습니다. (이미 제대로 해킹 당했으면 흔적도 지워져 있지 싶습니다만)

이거 어떻게 대처해야 할까요?

아 그리고, 혹시 su의 버전이

# su --version
su (coreutils) 4.5.3
Written by David MacKenzie.

Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

위와 같이 나오는 분이 계시다면 /bin/su 파일의 md5 값을 좀 확인해 주시면 감사하겠습니다. 제 경우는 아래와 같습니다. (추신. 다시 생각해 보니, 컴파일 옵션이 조금만 바뀌어도 md5sum 값은 다르겠군요?)

# md5sum -b /bin/su
d4fa41311fdd3f7f24609127b1790b08 */bin/su
raymundo의 이미지

추가로 발견한 증상입니다.

일반 유저 상태에서 passwd 명령을 내리면, root의 패스워드를 바꾸는 과정으로 넘어가버립니다. @.@;;;

-bash-2.05b# whoami
****** (분명 제 id)
-bash-2.05b# passwd
Changing password for user root. (<-- 어째서 root???)
New password:

좋은 하루 되세요!

raymundo의 이미지

계속 질문만 이어올리게 되어 송구스럽습니다 -_-;

대장관리자라고 할 만한 친구가 연락이 안 되어 제가 이것저것 알아보려니 힘들군요.

chkrootkit 을 받아서 설치해봤습니다. 로그 중에 "not infected", "not found", "no suspect files"가 나온 것 말고 나머지만 여기에 적어보면,

Checking `lkm'... You have     9 process hidden for ps command
chkproc: Warning: Possible LKM Trojan installed
Checking `wted'... 1 deletion(s) between Sat Jan  7 15:58:29 2006 and Sat Jan  7 20:08:08 2006
Checking `chkutmp'... => possibly 1 deletion(s) detected in /var/run/utmp !
 The tty of the following user process(es) were not found
 in /var/run/utmp !
! RUID          PID TTY    CMD
! root          627 tty6   /sbin/mingetty tty6

오늘 뭔가 벌어지긴 한 것 같은데요.. ;;;;

좋은 하루 되세요!

raymundo의 이미지

chkrootkit의 결과에서 7일 15:58부터 20:08 사이에 뭔가 지워졌다는 걸 보고, /var/log/secure 파일의 해당 시간을 살펴봤는데요,

Jan  7 18:58:01 ****(호스트이름) sshd[18125]: Failed password for bin from 172.182.152.240 port 3471 ssh2
Jan  7 18:58:07 ****(호스트이름) sshd[18125]: Failed password for bin from 172.182.152.240 port 3471 ssh2
Jan  7 18:58:29 ****(호스트이름) sshd[18125]: Accepted password for bin from 172.182.152.240 port 3471 ssh2    <-- Accepted 라니????
Jan  7 19:05:45 ****(호스트이름) sshd[398]: Received signal 15; terminating.
Jan  7 19:05:45 ****(호스트이름) sshd[25538]: Server listening on 0.0.0.0 port 22.
Jan  7 19:06:13 ****(호스트이름) sshd[25543]: fatal: mm_request_receive_expect: read: rtype 10 != type 24
Jan  7 19:06:24 ****(호스트이름) sshd[25551]: Illegal user ROOT from 172.182.152.240
Jan  7 19:06:24 ****(호스트이름) sshd[25551]: Failed none for illegal user ROOT from 172.182.152.240 port 3483 ssh2

172.182.152.240 은 조회해보니 AOL의 것으로 보입니다.
bin 이라는 유저는 /etc/passwd 와 /etc/shadow 에 각각

bin:x:1:1:bin:/bin:/bin/bash
bin:$1$1guG....(생략):12665:0:99999:7:::

로 있긴 하네요. 그런데 bin 이란 건 실제 사람의 아이디가 아닌데 왜 암호가 있는지, 그리고 저 AOL을 통해 접속한 사람은 어떻게 Accept가 되었는지 모르겠습니다.

아 이걸... 정말 서버를 아예 halt 시켜 버리고 내일 생각할까요?

좋은 하루 되세요!

Stand Alone Complex의 이미지

저의 소견으로는 시스템의 중요 파일들이 변경된것은 확실한것 같습니다.
고로 서버를 halt 시키시고, 시스템을 다시 설치하시는것을 추천해드립니다.
물론 원인 파악을 하신뒤 그런일이 다시 일어나지 않도록 조취를 취하셔야겠습니다.

RET ;My life :P

Stand Alone Complex의 이미지

다시 한번 정리해보자면.

1. "bin이라는 유저에 암호가 있다."

슈퍼유저의 실수일 확률은 제로에 가깝습니다.
"이미 이번일이 터지기전에 서버가 뚫렸을 확률이 높다"라는 결론이 내려집니다.

2. "bin이라는 유저가 접속한뒤 sshd가 재시작되었다."

sshd가 조작되었을 수도 있음을 알려줍니다.

3. "ssh를 이용해서 root로 접속을 시도했다."

크래커가 이미 root권한을 획득했을 수도 있습니다.

RET ;My life :P

hiseob의 이미지

Checking `lkm'... You have     9 process hidden for ps command 
chkproc: Warning: Possible LKM Trojan installed 
Checking `wted'... 1 deletion(s) between Sat Jan  7 15:58:29 2006 and Sat Jan  7 20:08:08 2006 
Checking `chkutmp'... => possibly 1 deletion(s) detected in /var/run/utmp ! 
 The tty of the following user process(es) were not found 
 in /var/run/utmp ! 
! RUID          PID TTY    CMD 
! root          627 tty6   /sbin/mingetty tty6 

저런경우는 possible 아니라 must 라고 보심 됩니다
재설치를 하시던가 하셔야 겠네요 뚫린게 확실하다고 보여집니다.

raymundo의 이미지

답변 주신 두 분 정말 감사합니다.

그렇잖아도 좀 전까지, 백업이나 받아놓자고 이런 저런 디렉토리를 tar로 묶는 과정에서 발견했습니다.

/tmp 디렉토리 아래에
getuid.c
getuid.so
두 가지 파일이 있더군요.

제가 별 생각없이 /tmp 를 비운다고 다 지웠더니만, 그 다음부터 거의 모든 바이너리 명령어들이 실행되지 않습니다. ㅠ,.ㅠ

# ls
ls: error while loading shared libraries: /tmp/getuid.so: cannot open shared object file: No such file or directory

다른 시스템에 있는 바이너리를 가져와서 실행해도 똑같은 에러가 나는 걸로 봐서, 애초에 쉘 자체가 변경되어 있던가, 뭔 어찌했는지 몰라도 무조건 저 라이브러리를 불러와서 uid에 관한 뭔가를 하도록 해놨나봅니다. (저 getuid.c 를 진작 발견했으면 가져와서 소스라도 구경하겠건만)

그래서 지금은... halt 조차 안 되고 있습니다. -_-;;;;;

지금은 너무 졸려서, 내일 관리자친구와 연락될때까지의 몇 시간 동안은 그냥 운명에 맞기고 그냥 잠들것 같습니다. 한 4시까지는 어떻게든 깨어 있으려 하니, 이 글 보시는 분은 혹시 저 시스템을 원격에서 halt 시킬 방법이 있을런지 조언 주시면 감사하겠습니다. (해당 업체에 전화를 해봤는데 이 시간엔 역시 안 받는군요)

좋은 하루 되세요!

raymundo의 이미지

아아 저는 바보입니다... OTL

뒷정리를 한다면서 그 서버에 텔넷으로 접속되어 있던 창마저 닫아버리는 바람에... 이제는 텔넷 연결조차 안 됩니다. OTL ssh는 아까도 안 되었고, ftp는 서버가 계속 떠 있었던 탓인지 되기는 하는데 ftp가지고 시스템을 종료시킬 방법이? -_-;;;;

좋은 하루 되세요!

Stand Alone Complex의 이미지

ftp로 halt는 못시킬듯하고요. 정말로 급하시다면 서버가 있는 IDC로 날라가셔서 셧다운을 시키심이...

RET ;My life :P

Stand Alone Complex의 이미지

아래 링크를 보시면 raymundo님이 당하신듯한 공격에 대한 약간의 설명이 있습니다.

http://72.14.203.104/search?q=cache:fxstUnzIo-cJ:linuxmonkey.blogspot.com/2005_06_01_linuxmonkey_archive.html&hl=ko

Quote:
When I wrote last week about getting rootkit-ed, I didn't mention that it was md5sum that helped me detect the changes made to the sshd binary. The attacker left a backdoor (/etc/ld.so.preload); creates a /tmp/getuid.so that returns 0 when login/ssh daemon tries to look up a user's UID. It was admittedly, not a very deep attack (it was not even a Loadable Module Kernel-style attack), and the attacker did not even attempt to erase his footprint.

찾아보니 저 서버 공격에 쓰인 익스플로잇 코드를 만든 사람이 저 서버에 쓰인 익스플로잇 코드( http://packetstorm.linuxsecurity.com/0505-exploits/arpusCE.c )와 거의 동일하게 작동하는 펄 로컬 익스플로잇( http://www.k-otik.com/exploits/20050207.ex_perl.c.php )도 만들었는데 하는짓이 같더군요.

제가 생각하기에는 두개중 하나에 당하신것 같습니다.
또한 로컬 익스플로잇의 특성으로 보아 쉘이 있는 일반 유저 계정이 뚫린것 같고요.
그 뚫린 계정은 bin일 확률이 높습니다.

또한 확대 해석을 해보자면 이 익스플로잇을 쓰기 전에 이미 뚫렸을수도 있습니다.
이렇게 생각한다면 bin이 암호를 가지게된 이유가 설명이 될 수도 있습니다.

제가 생각하기에 이것에 대한 해결 방안으로는

만약 이 로컬 익스플로잇로 인해서 서버가 "처음" 뚫린 것이라면 해당 로컬 익스플로잇이 통하는 해당 소프트웨어를 업데이트를 하시고 그것이 불가능하면 일반 사용자가 gcc 사용을 못하게 막고 그것 또한 불가능 하다면 모든 사용자에 대하여 비밀번호를 더 복잡하게 바꾸라고 요구를 하시면 될 것 같습니다.

하지만 이번이 첫번째 침입자가 비밀 번호를 걸어논 bin에 의해서 "두번째" 로 뚫린것이고 두번째 침입자가 여러가지짓를 해서 들킨것이라면 로그와 파일들를 분석해서 첫번째로 뚫린 원인과 대처 방안을 찾아봐야할것 같습니다. (물론 두번째 뚫린것에 대한 대처도 해야겠죠.)

P.S 이것은 어디까지나 저의 의견일뿐입니다. 참고만 해주세요.

P.S2 새벽에 쓴거라 글이 좀 횡설수설하는 느낌이 없지 않게 있네요; 죄송합니다.

RET ;My life :P

raymundo의 이미지

Stand Alone Complex님, 늦은 새벽에 이리 애써 주셔서 정말 감사합니다.
(저는 결국 4시 되기 전에 잠들어버려서 지금에야 봤습니다 ^^;)

제가 해킹에 대해 잘 몰라서... 저 루트킷이란 건 다른 이의 UID를 얻어내는 것으로 보이는데, (root의 uid를 얻어내는 게 목표겠죠?) "그럼 정작 저 루트킷은 처음에 어찌 설치하고 어떻게 실행했을까?"라는 의문이 생깁니다. 그 전에 다른 방법으로 일반 유저 계정을 뚫은 게 아닐런지요.

어쨌거나, 지금 원격에서 telnet 접속도 안 되고, IDC는 전화를 안 받는데다 광주에 있는 회사라서 달려갈 수도 없습니다. ㅠ,.ㅠ 내일 전화를 해보고 데이타를 백업하고 재설치해야겠군요.

예전에 쓰던 레드햇말고 최신의 배포본을 쓰려고 하는데, 요즘 배포본 중에 패키지 보안 업데이트가 잘 되고, 그것을 손쉽게 다운로드&적용할 수 있는 (debian에서 dselect 쓰듯이 웬만하면 원터치로 할 수 있으면 좋겠습니다) 배포본 좀 추천들 해 주시면 감사하겠습니다.

Stand Alone Complex님과 hiseob님 다시 한 번 감사드립니다~

좋은 하루 되세요!

Stand Alone Complex의 이미지

raymundo wrote:

제가 해킹에 대해 잘 몰라서... 저 루트킷이란 건 다른 이의 UID를 얻어내는 것으로 보이는데, (root의 uid를 얻어내는 게 목표겠죠?) "그럼 정작 저 루트킷은 처음에 어찌 설치하고 어떻게 실행했을까?"라는 의문이 생깁니다. 그 전에 다른 방법으로 일반 유저 계정을 뚫은 게 아닐런지요.

예전에 쓰던 레드햇말고 최신의 배포본을 쓰려고 하는데, 요즘 배포본 중에 패키지 보안 업데이트가 잘 되고, 그것을 손쉽게 다운로드&적용할 수 있는 (debian에서 dselect 쓰듯이 웬만하면 원터치로 할 수 있으면 좋겠습니다) 배포본 좀 추천들 해 주시면 감사하겠습니다.


제가 보기에는 bin이라는 유저 계정 또는 일반 유저 계정이 ssh나 텔넷에서 무차별 대입법또는 사전식 공격에 의해 뚫린뒤 저 로컬 익스플로잇을 실행했으리라 생각됩니다. (이번이 첫 침입인지는 시스템 로그를 분석해봐야 알것 같습니다.)

새로 설치하실거라면 데비안을 추천해드립니다. 데비안에서 harden-* 패키지를 설치하시면 빈 패키지이지만 보안에 위협이되는 패키지랑 충돌이 생겨서 설치가 안됩니다. (적어도 제가 알기로는 그래요.) 또한 관리하기도 편하고요. aptitude 만세! :twisted:

harden 패키지에 대한 자세한 정보는 http://www.debian.org/doc/manuals/securing-debian-howto/ch-automatic-harden.en.html 에 있습니다~

RET ;My life :P

정태영의 이미지

raymundo wrote:
예전에 쓰던 레드햇말고 최신의 배포본을 쓰려고 하는데, 요즘 배포본 중에 패키지 보안 업데이트가 잘 되고, 그것을 손쉽게 다운로드&적용할 수 있는 (debian에서 dselect 쓰듯이 웬만하면 원터치로 할 수 있으면 좋겠습니다) 배포본 좀 추천들 해 주시면 감사하겠습니다.

요새껀 저정도는 다 되지 않던가요 ;)

yum check-update 라던가 up2date -u 라던가 emerge --sync && emerge world 라던가 ...

개인적으론 젠투를 추천해드리고 싶지만 선택은 취향것 하시길 흐흐흐

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.