네 오늘도 역시 난리입니다.

최근에 iwinv에서 마인크래프트 서버를 돌리는 용도로 ubuntu서버를 구매 했습니다.

7/21에 오픈하고 7/25에는 접속자가 많아져서 서버 업그레이드까지 하게 되었는데,,,,,,,!!

오늘 7/26 해킹을 당해버렸지 뭡니까. 미쳤냐고!!! 평화로운 게임 서버 해킹해서 어디에 쓴다고…….

image

신고 받고 ubuntu 서버에 접속하려 했더니 root계정의 비밀번호가 바뀌어 있었습니다…

다시 생각해보면 내가 바보죠.

이 전부터 징조는 있었습니다.

  1. 방화벽 해제

    마크 서버에 다른 친구들이 접속할 수 있도록 하려면 특정 포트를 개방해 주어야 합니다. 하지만 저는 포트 뚫기가 귀찮았어요. 그리고 전에 django REST API 배울 때 그냥 연습용으로 하루 쓸 용도로 똑같은 서버를 구매했었는데요. 그 때 선배님이 방화벽 그냥 해제해도 된다고 하였는데 그래서 인지 무슨 자신감인지 아무런 망설임 없이 방화벽을 해제했습니다^^ 미친거죠. 가뜩이나 Iwinv는 2년 전에도 해킹당해서 데이터 손실나고 난리가 나는 등 보안 이슈가 많은 서비스 업체인데 말이죠.

  2. 마인크래프트 서버에 서버 주소 알려주지도 않은 외국인이 들어온다.

    제 서버는 친구의 친구로 이어지는 인맥을 바탕으로 초대를 받아야만 서버 주소를 알 수 있습니다. 대략 10명정도가 플레이 했고요.

    그런데 무슨 마인크래프트 서버에 외국 아이피 접속이 들어오더라고요. 새벽에 막 Bunger이랑 ServerSeeker씨가 1초 들어왔다 나가시더라고요. log에 IP가 남아있어서 주소지를 보니 뭔 우크라이나, 몬트리올? 이런 데서 VPN인지 뭔지 들어오더라고요. 나야 물론 그냥 마인리스트 같이 마크 서버들 나열하는 웹서비스에서 서버 온라인 상태 확인하는 건가 싶어서 그냥 놔뒀어요.

    근데 한번은 친구들이랑 게임하고 있을 때 어떤 외국인(IP주소에 따르면)이 들어오더니 친구한테 엄청난 속도(정상적이지 않은 속도)로 뛰어가서 막 때리고 공중부양하고 난리가 났습니다. 공중부양님 IP-ban하고 그 뒤로 white-list 적용하기는 했는데, 서버 자체가 아니라 마인크래프트 상의 보안만 조금 높인 거에 해당합니다.

  3. 국제트레픽

    해킹 당하고 나서야 알았지만 서버에 국제 트래픽이 간간히 측정 되었습니다. 한 6명 접속해서 거의 10시간 가량 같이 논 날이 23일인데, 국내 트래픽이 4.7GB이고 국제 트래픽이 0.6GB?? 사실 트레픽 이런 건 잘 모르지만 애초에 크기를 떠나서 국제 트래픽이 찍히는 게 해킹에 대한 경고였을 겁니다…

  4. 뇌를 빼버린 나? 이 사단이 난 가장 핵심 원인은 결국 접니다. 위의 세 가지 이유는 다 필요 없고 그냥 이 네번째가 문제에요. 진짜 다시 생각해봐도 내가 사람인지 의심스럽기는 합니다. 25일 즈음 서버 업그레이드 하면서 미쳐가지고 root 계정 비밀번호를 admin으로 바꿨어요 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 하하하하 (도데체 왜 그런 짓을)

    뭐 방화벽도 없고 비밀번호도 해킹 툴로 사람들 많이 쓰는 암호 하면 거의 1순위로 나올 admin을 해놨다는 것은 해커한테 ‘저 좀 해킹해주세요~’ 하는 꼴이죠. 정말 과거의 저는 무슨 생각을 했던 걸까요. 저도 참 궁금합니다.

일단 해킹당했으니, 해결을 해 볼까요?

일단 마크 서버가 안 들어가진다는 제보를 받고 putty로 들어가니까 root 계정 비밀번호가 변경되어 있었습니다. root를 빼앗긴 이상 판은 못 뒤집는다고 봐야 됩니다. root가 서버의 모든 권한을 갖고 있거든요.

일단 서버는 교체해버리면 그만이니 데이터라도 빨리 가져오려는 마인드로 root 계정의 비밀번호를 재설정 해보자는 생각을 했습니다. 그나마 이 생각이 가능했던거는 iwinv 웹에서 제공하는 콘솔로 서버에 접속하는 방법이 있었거든요.

root 계정 비밀번호 재설정

인터넷에 서버가 해킹당한 사례는 최신 정보가 없어서 ‘root 비밀번호 분실’을 키워드로 구글링을 시작했습니다. 이 부분은 한국어 자료가 많더라고요.

그 중 아래 링크의 설명이 가장 자세하게 나와 있었습니다.

https://www.kinx.net/IXcloud/manual/index.html?QRootLinux.html

자 우리 그대로 따라 해 봅시다.

몇 번의 시도 끝에 일단 GRUB 환경 진입에 성공했습니다. (shift 키 누르는 타이밍이 생각보다 어려워요.)

image

위의 사이트 설명대로 진행했습니다.

passwd: Authentication token manipulation error
linux single mode operation not permitted
unable to resolve host

unable to resolve host 해결 방법(물론 제 케이스는 해당 안됨) passwd에서 막혔습니다. ㅎㅎ 구글링 시작!

아래 사이트의 조언을 2번씩 모두 시도했으나 실패.

https://www.tecmint.com/fix-passwd-authentication-token-manipulation-error-in-linux/

https://access.redhat.com/discussions/3194412 ~ ~

이미 당했다.

image

이게 shadow 파일이라고 최고 권한을 가진 root를 포함한 서버에 접속할 수 있는 user의 비밀번호가 기록된 핵심 파일입니다. 이게 20:06에 수정되었다는 것인데, 이 시점에 마크 서버가 비정상 종료되었고 제가 비밀번호를 수정한 적도 없으니 해커 짓입니다. 이미 shadow가 털렸다는 건 음. 조졌네 이거

해커가 해킹하고 바꾼 비밀번호를 내가 해킹해보자

네 그렇다고 합니다.

비밀번호 재설정하려고 이것 저것 찾다 보니까 etc/shadow, etc/passwd에 대해 알게 되었습니다. 다행히 파일은 열리더라고요. 편집은 불가능했지만… 그래서 이 해시 값을 해독해버릴 생각을 해보았습니다.

~

자세히 보시면 이상한 문자들이 나열되어 있습니다. 일단 이게 뭔지 알아 봅시다. 해시 id, parameter, solt, hash 값인데요. 이 문자들을 해독하면 비밀번호를 알아낼 수 있습니다. 자세한 정보는 다음 글에서 다룰게요. 그래도 궁금하다면 아래 링크를 참고하세요.

shadow 파일의 암호 설명 위키피디아 yescript

다운로드 링크

John the Ripper 사용 방법1 John the Ripper 사용 방법2 John the Ripper의 작동 방식

John the Ripper 사용 시 흔하게 보이는 에러

No password hashes loaded

john으로 해독하라고 명령한 파일을 제대로 인식하지 못하고 있는 겁니다. 저는 아래 명령어를 사용하니까 해결 되었어요.

john.exe --format=crypt pass.txt

해보자 한번

이제 John 씨를 사용해 봅시다. 작동 방식에 대한 글을 읽으셨다면 아시겠지만 admin, apple 등 사람들이 많이 사용하는 암호를 먼저 대입한 후, 그래도 해독이 되지 않는다면 무작위로 대입하는 방법을 사용하게 됩니다. 하지만 무작위 대입 방법이 쉽다면 전 세계 개인정보는 다 털렸을 겁니다. 즉, 무작위 대입으로는 수 백만 년이 걸릴 수도 있습니다. 일단 24시간 정도 돌려보기로 했습니다.

image

지금 대략 30시간 정도 넘게 돌린 것 같은데, 아직도 해독에 실패했습니다. 흔한 비밀번호로 설정하지는 않았다는 소리지요. 이 방법은 포기하는 게 좋겠습니다.

처음이라 그래요…

linux를 사실 잘 모릅니다. 제대로 공부해 본 적도 없고 토이 프로젝트 하면서 서버 돌릴 용도로만 몇 번 사용했을 뿐입니다. 당연히 보안이 얼마나 중요한지도 몰랐고, 공인IP는 쉽게 노출이 되어 있다는 사실 또한 몰랐습니다.

iwinv씨에게 SOS 쳐 보는 건 어때요?

아 네. SOS 하려고 했는데요. 기술 문의 폼이 있는데 문의 분야를 선택하라고 뜹니다. 막 제목이랑 설명이랑 열심히 쓰고 분야를 선택하려고 하는데, 해킹 점검만 해도 최소 10만원. 점검 및 해결은 최소 15만원이라고 아주 상세하게 안내가 쓰여있더라고요? 에라이. 퉤.

주변에 해킹이나 linux 잘 아는 선배한테 부탁해 보는 건 어때요?

선배한테 위에서 저지른 나의 바보 같은 실수를 공개? 할 수 있죠. 하지만 마크 서버 돌리던 거 해킹해 달라고 하면………. 그건 좀 그래서………… PASS. 그리고 사실 해킹이나 linux하는 선배님은 아직 직접 못 만나봤어요.

스스로 재앙을 만들고 재앙을 이겨내며 강해지는 중….

스스로 재앙을 불러오는 건 제 전문입니다. 하지 않아도 될 것들을 굳이 하는 것 말이죠. 이전 글에서도 말한 적 있지만 이런 허술하고 바보 같은 자세가 학생 입장에서는 생각보다 많은 지식을 얻게 해줍니다.

그래서 이번 재앙을 통해 얻은 지식은요~

  1. linux root 비밀번호 재설정(온 인터넷에 있는 조언을 시도했지만 결국 저는 해커가 권한을 다 막아서 실패했습니다^^)
  2. linux permission
  3. linux etc 내부 파일들의 역할(shadow, passwd 등등)
  4. ubuntu의 사용자 패스워드 암호화
  5. 해킹 도구 John the Ripper 사용법과 작동 원리
  6. 구글링 기술
  7. 백업의 중요성

등등 매우 많습니다^^

앞에서 다루지 않은 정보는 링크 남기겠습니다.

Linux의 파일 구조 설명

결국은 실패…

사실상 데이터 살리는 데에 실패했습니다…. 그래도 전날 3시 백업이 있으니 그 파일로 서버를 다시 열어 놓을 생각입니다.

마무리

오늘 정말 정신없는 날이었습니다. 집안은 집안대로 파탄나고 서버는 서버대로 파탄나고. 시시각각 일어나는 재앙 덕분에 아주 강해지고 있습니다.

서버 해킹으로 데이터가 손실된 것은 진짜 너무 아깝고 친구들에게도 너무 미안한 부분입니다. 하지만 사실 오늘 하루가 좀 힘들었는데 갑자기 밤에 컴퓨터랑 씨름하면서 많이 재미있었습니다. 시간 가는 줄 모르고 정보 찾고 시도하고, 해시 해독을 돌려놓고는 아직도 여운이 남아서 새벽 3시가 넘었는데 이 글을 쓰고 있으니 말입니다.

이럴 때마다 느끼는 점이지만 컴퓨터랑 제가 꽤 잘 맞나 봅니다 ㅎㅎ

다들 오늘은 좋은 하루 보내시길 바래요^^