루트 액세스 권한이 있으면 다른 사용자의 비밀번호를 알 수 있나요?

루트 액세스 권한이 있으면 다른 사용자의 비밀번호를 알 수 있나요?

특정 RHEL 시스템에 대한 루트 액세스 권한이 있는 경우 다른 사용자의 비밀번호를 검색할 수 있습니까?

답변1

핵심요약: 아니요, 비밀번호는 (일반적으로) 복구할 수 없는 해시로 저장됩니다.

Linux는 어디에도 일반 텍스트 비밀번호를 저장하지 않습니다.기본적으로. 이는 다양한 알고리즘을 통해 해시되거나 암호화됩니다. 따라서 일반적으로 아니요. 저장된 데이터로는 불가능합니다.

데이터베이스 가 아닌 다른 곳에 비밀번호가 저장되어 있는 경우 /etc/passwd이를 허용하는 방식으로 저장될 수 있습니다. htpasswd파일에는 약하게 암호화된 비밀번호가 포함될 수 있으며, 다른 응용 프로그램은 다양한(일반적으로 나쁜) 이유로 약한 해시 또는 일반 텍스트 비밀번호를 저장할 수 있습니다.

또한 사용자 구성 파일에는 다양한 이유로 암호화되지 않은 비밀번호나 약하게 보호된 비밀번호가 포함될 수 있습니다. 다른 서비스에서 콘텐츠를 가져오는 메일을 가져오거나 .netrc간단한 자동화된 항목에 비밀번호가 포함될 수 있습니다.

비밀번호가 이전의 약한 알고리즘(3DES, MD5)으로 해시되거나 암호화된 경우 비밀번호가 무엇인지 합리적으로 효율적/저렴하게 알아낼 수 있습니다. 변환을 되돌리기보다는 데이터를 공격함으로써 가능합니다. (예: 다음과 같은 것http://project-rainbowcrack.com/또는http://www.openwall.com/john/)

당신이 루트이기 때문에 다른 수준에서 사용자 비밀번호를 공격하는 것도 가능합니다. 로그인 바이너리, sudo, PAM의 일부 등을 비밀번호가 입력될 때 이를 캡처할 수 있는 것으로 바꾸십시오.

구체적으로는 그렇지 않습니다. 그러나 일반적으로 루트 액세스 권한이 있으면 다양한 사이드 채널을 통해 사용자 세부 정보를 더 쉽게 얻을 수 있습니다.

답변2

여기에 있는 다른 답변과 달리 "루트가 있는 경우"로 끝나는 이 질문과 다른 많은 질문에 대한 간단한 대답은 '예'라고 말하고 싶습니다.

기본적으로 루트는 시스템 자체에서 수행할 수 있는 모든 작업을 컴퓨터에서 수행할 수 있습니다. 시스템은 귀하의 비밀번호를 받아들일 수 있으므로 루트는 충분한 노력을 기울여 귀하의 비밀번호나 귀하의 비밀번호 대신 자신의 비밀번호를 받아들일 수 있습니다. 더 중요한 것은 그 사람이 귀하의 비밀번호를 변경하거나 귀하가 될 수 있다는 것입니다.

특히 비밀번호는 일반적으로 암호화됩니다. 이것은 일반적으로 일종의 "단방향" 알고리즘으로, 비밀번호를 확인하는 데 사용할 수 있는 숫자(해시)를 생성하지만 일반적으로 숫자를 뒤집어서 비밀번호를 다시 가져오는 데는 사용할 수 없습니다. 따라서 누군가의 비밀번호를 알아내기 위해 파일을 읽는 것만으로는 문제가 되지 않습니다.

즉, 쉘 기록과 로그인 기록을 읽을 수 있습니다. 여기서는 어떤 시점에서 사용자 이름 대신 비밀번호를 입력했거나 비밀번호 프롬프트 대신 쉘에 입력했을 가능성이 높습니다. 이 경우 일반 텍스트가 됩니다. 이것은 내가 아는 좋은 해결책이 없는 텍스트 기반 터미널에서 매우 일반적인 현상입니다.

그러나 이 문제를 제쳐두더라도 "단방향" 암호화는 실제로는 단방향이 아닙니다. 일치하는 암호를 찾을 때까지 동일한 단방향 프로세스로 암호를 여러 조합하여 암호화하는 도구가 많이 있습니다. 그런 다음 그들은 액세스 권한을 얻을 비밀번호를 알고 있습니다(비록 루트로서 이미 해당 시스템에 액세스할 수 있음).

더 나쁜 것은 위 프로세스에 대해 미리 계산된 답변인 레인보우 테이블이 있다는 것입니다. 사람들은 이미 주어진 암호화된 비밀번호에서 나오는 원래 비밀번호를 생성했습니다. 이를 사용하면 간단한 조회가 가능하며 시간이 많이 걸리는 크래킹 시도가 필요하지 않습니다.

다시 말하지만, 루트 수준 액세스는 보호해야 할 사항입니다. 이것이 손상되면 전체 시스템과 그 안에 있는 모든 것이 손상됩니다. 모든 사용자에게 귀하의 비즈니스가 더 이상 개인 정보 보호를 신뢰할 수 없음을 알리는 것을 포함하여 다시 시작할 시간입니다. 그리고 그렇습니다. 이는 사업을 중단하는 것을 의미할 수도 있습니다.

답변3

그렇다면 root비밀번호 크래커를 실행할 수 있습니다 /etc/shadow(LDAP나 Kerberos 등이 아닌 로컬 비밀번호를 가정). 좋은 비밀번호를 선택하고 시스템이 강력한 비밀번호 해싱을 사용하도록 구성된 경우 이는 효과적이지 않을 수 있습니다. 그러나 시스템 비밀번호는 일반 텍스트로 저장되지 않습니다. 비밀번호는 에서도 직접 사용할 수 없습니다 root.

답변4

모든 비밀번호는 /etc/shadow파일에 저장됩니다. 루트 액세스를 사용하여 이 파일을 열고 hash value각 사용자(루트 사용자 포함)에 대한 비밀번호를 볼 수 있습니다.

어떤 종류의 비밀번호 해독 소프트웨어가 없으면 이러한 해시 값을 일반 텍스트로 다시 변환할 수 없습니다.

그러나 여전히 루트 사용자에 대한 액세스 권한이 있는 경우 다음 명령을 사용하여 일반 사용자의 비밀번호를 변경하고 해당 계정에 액세스할 수 있습니다.

root@localhost$ passwd pradeep

사용자에 대해 설정하려는 새 비밀번호를 묻는 메시지가 표시됩니다 pradeep. 이렇게 하면 pradeep의 비밀번호를 변경할 수 있습니다.

이제 다음 방법으로 그의 계정에 액세스할 수 있습니다.

root@localhost$ su pradeep

그러면 pradeep 사용자로 전환되고 다음과 같은 터미널이 표시됩니다.

pradeep@localhost$

관련 정보