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

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

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

답변1

핵심요약: 아니요, 비밀번호는 해시로 저장되며 (보통) 복구할 수 없습니다.

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

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

또한 사용자 프로필에는 다양한 이유로 인해 암호화되지 않거나 약하게 보호되는 비밀번호가 포함될 수 있습니다. fetchmail은 다른 서비스의 콘텐츠를 스크랩 .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$

관련 정보