에서 : http://seclists.org/fulldisclosure/2009/Jul/0388.html
내가 http://news.ycombinator.com/item?id=723798 에서 게시물을 가장 잘 이해한다면 Matasano 사람들은 sshd 인터넷에 액세스 할 수 있습니다.
에서 : http://seclists.org/fulldisclosure/2009/Jul/0388.html
내가 http://news.ycombinator.com/item?id=723798 에서 게시물을 가장 잘 이해한다면 Matasano 사람들은 sshd 인터넷에 액세스 할 수 있습니다.
답변:
Matasano는 어떻게 해킹 당했습니까?
게시물의 정보를 전체 공개에 답하는 것은 불가능합니다. 그러나 그들은 약간의 정보를 제공하기 때문에 항상 추측하는 것이 흥미 롭습니다.
# ./th3_f1n4l_s0lut10n www.matasano.com [-] 69.61.87.163:22.에 연결 [/] 루트가 아닌 유효한 사용자를 찾고 있습니다. ******** R3D4CT3D h4h4h4h4 ********
그들은 th3_f1n41_s01ut10n
ssh 포트에 연결된 Matasano 서버에 대해 바이너리 " "를 실행합니다 . 알 수없는 수단을 통해 루트가 아닌 유효한 사용자를 찾고 나머지 출력을 수정합니다.
# ./th3_f1n4l_s0lut10n -u adam -t 3 www.matasano.com [*] 209.112.118.10:3338의 연결 리스너. [!] SSH2_MSG_SERVICE_ACCEPT [OpenSSH_4.5p1, OpenSSL 0.9.8g 2007 년 10 월 19 일]
바이너리는 찾은 사용자 이름을 사용하여 다시 실행되며 포트 3338에서 서버에 다시 연결됩니다 (이름에 등록되지 않았 으면합니다).
adam_at_www : ~ $ uname -a Linux www 2.6.20.1-1-686 # 1 SMP Sun Mar 4 12:44:55 UTC 2007 i686 GNU / Linux **** h4h4h4hh4h4h4 l3tz us3 m0r3! 0D4Y! H4H4H4H4H4H4H4 ****
그들은이 커널에 대해 0 일이 있음을 암시 할 수 있습니다.이 회사의 주식 거래를 고려할 때 꽤 오래되었습니다.
adam_at_www : ~ $ cd / tmp *********** B0R1NG *********** root_at_www : ~ # 고양이 / etc / shadow
으악-갑자기 사용자는 이제 뿌리입니다. / tmp에 참조한 0 일일 수있는 로컬 권한 에스컬레이션 익스플로잇이 있습니다.
따라서 적어도 두 가지 익스플로잇이 진행 중입니다. OpenSSH 익스플로잇은 시스템에서 루트가 아닌 유효한 사용자를 얻고 해당 사용자로 로그인 한 다음 로컬 권한 에스컬레이션입니다.
OpenSSH에 버전 4.5 이후 알려진 몇 가지 보안 문제가 있다는 것을 고려하면 :
에서 OpenSSH의 보안 페이지 :
~/.ssh/rc
sshd_config (5) ForceCommand 지시문으로 명령이 재정의 된 세션에 대해서는 실행되지 않습니다 . 이것은 문서화되었지만 안전하지 않은 동작입니다 (OpenSSH 4.9 릴리스 노트에 설명되어 있음).나는이 오래된 리눅스 커널과 오래된 SSH 데몬이 그것들을 위해 가지고 있다고 생각합니다. 또한 인터넷에서 사용할 수있는 www 서버에서 실행 중이므로 제 생각에는 자신감이 있습니다. 침입 한 사람들은 당황스러워하고 싶었습니다.
이러한 공격을 방지하는 방법은 무엇입니까?
이는 사전 예방 적 관리를 통해 방지 할 수 있습니다. 인터넷 연결 서비스를 패치하고 사람들이 어디에서나 연결하지 않고 연결할 수있는 사람의 수를 제한하십시오. 이 에피소드는 보안 시스템 관리가 어렵다는 교훈을 더욱 복잡하게 만들고, 최소한 소규모 회사에서는 쉽게 일어나는 일이 아니라 실제로 IT가 일을 패치 할 수있는 시간을 제공하기 위해 비즈니스에 전념해야합니다.
벨트 앤 괄호 방식을 사용하는 것이 가장 좋습니다. 공개 키 인증, ssh 데몬의 허용 목록, 2 단계 인증, IP 제한 및 / 또는 VPN 뒤에있는 모든 항목을 잠그는 경로 일 수 있습니다.
내일 직장에서 무엇을할지 알고 있다고 생각합니다. :)
사람들은 그것을 통해 FUD를 만드는 것을 좋아하지만, 사용자 아담이 이미 있다는 것을 알고 자신의 암호도 알고 있습니다 (무차별 한 방법이나 다른 방법을 통해). 그러나 그들은 시원하게 보이고이 혼란을 만들고 싶어합니다.
주목해야 할 또 다른 점은 사용자 adam이 1 년 이상 해당 상자에 로그인하지 않았다는 것입니다.
(라스트 로그 출력)
adam pts/1 ool-4350ab48.dyn Sat Jul 26 20:45:18 -0400 2008
그래서 그는 아마도 그 암호 (나쁜 암호 일 수도 있음)를 잠시 동안 유지했을 것입니다.
* 실제로 SSH를 통해 사용자 이름을 검색하는 도구가있는 경우 다른 모든 사용자를 사용하여 원격 액세스를 얻을 수 있었지만 해당 상자에서 가장 일반적인 사용자 이름을 사용했습니다 (쉽게 추측).
프로그래밍 관점에서 왜 이것을 시도하고 해결 하시겠습니까?
대신 스마트 서버 관리자의 관점에서 해결해야합니다. 허용 된 사이트 목록 사용과 같이 게시 한 링크의 의견에 대한 몇 가지 훌륭한 제안이 있습니다.
또한 여기에 요청하기 때문에 보안 전문가가 아닐 가능성이 높으며 작성하려고 생각할 수있는 것은 더 많은 구멍을 추가 할 것입니다. 이것은 실제로 프로그래밍 질문이 아닙니다.
0 일 공격으로부터 소프트웨어를 보호하십시오 ... 불가능합니다.
어쩌면 한 가지 좋은 접근 방식은 소프트웨어를 해킹 할 수 없다고 주장하는 것입니다. 이로 인해 화이트 햇이 소프트웨어를 사용 해보고 모든 것을 공개하여 구멍을 거의 남기지 않을 것입니다. Oracle 10은 이러한 주장을했으며 다음 날 9 개의 새로운 구멍이 발견되었습니다. 지금은 안전합니다.
아마도 해커는 완벽하게 좋은 소프트웨어의 구성을 남용했습니다.
그들은 그 기계에 쉘을 가진 많은 사용자를 가지고 있다는 것을 생각 나게한다. 그것이 그들이 확실히 소유 한 방법입니다. 다른 모든 것들은주의를 산만하게합니다. 그들 중 하나는 다른 쉘 시스템에서 ssh 클라이언트를 백도어로 얻었고 게임이 끝났습니다. 모든 사람들에게 쉘 계정을 제공하고 sshd 세계에 액세스 할 수있게하는 것은 게으르고 어리 석습니다.