답변:
개인 키를 검색 할 수있었습니다. 그러나 쉽지 않았습니다. 수행해야 할 작업은 다음과 같습니다.
소스 코드를 추출하고 9 행을 다음과 같이 조정하십시오 Makefile.main
.
$(CC) $(CFLAGS) -o $@ $(OBJS) $(LDFLAGS)
(주목하라 있음 $(OBJS)
과는 $(LDFLAGS)
역순으로한다.)
./build.sh
.다음을 사용하여 Apache의 PID를 가져옵니다.
service apache2 status
passe-partout
루트로 명령을 실행하십시오 .
sudo passe-partout [PID]
... 여기 [PID]
에서 5 단계에서 검색 한 값이 있습니다.
프로그램이 성공하면 현재 디렉토리에는 많은 추가 키가 있습니다.
you@server:~# ls
id_rsa-0.key id_rsa-1.key id_rsa-2.key
모든 것이 잘 진행 되었다면 (그리고 희망적으로도), 그 열쇠 중 하나가 필요한 열쇠입니다. 그러나 사용중인 인증서 / 키 파일이 둘 이상인 경우 인증서 / 키 파일이 무엇인지 파악해야합니다. 그렇게하는 방법은 다음과 같습니다.
먼저 서명 된 키와 일치하는 인증서 사본을 가져옵니다. 파일 이름이이라고 가정하면 server.crt
다음 명령을 실행하십시오.
openssl x509 -noout -modulus -in server.crt | openssl md5
각 키와 일치해야하는 값이 출력됩니다. 각 키에 대해 다음 명령을 실행하십시오.
openssl rsa -noout -modulus -in id_rsa-0.key | openssl md5
그들 중 하나가 일치하면 키를 찾았습니다.
크레디트 : 이 기사 는 나에게 pass-partout을 지적했다.
키를 메모리에 저장하고있을 가능성이 높습니다. 이는 제공된 암호를 사용하여 권한을 삭제하거나 키를 해독 한 후에 사본을 보관해야하기 때문입니다.
이론적으로 디버거를 연결하면 프로세스 이미지에서 가져올 수 있지만 모범 사례를 따르는 경우 메모리의 무언가에 대해 암호화됩니다.
그것은 여전히 그것이 열려 있다면 일어날 /proc/${PID}/fd/${SOMETHING}
지도 모른다고 말했다. 덮어 쓰면 덮어 쓰기 데이터가 있기 때문에 키가 없을 것입니다. 다른 곳을 다른 곳에 복사했거나 삭제하거나 연결을 해제했거나 부모 디렉토리를 재귀 적으로 삭제 한 경우에는 그 곳에 있습니다.
cp
키 대신 새 키를 복사했습니다.
/proc
... 아무것도 없습니다.