2012-02-25 3 views
2

목표 (일반) 내 궁극적 인 (장기)의 목표는 다른 응용 프로그램암호화 알고리즘

질문의 배경

  • 나는에 바이너리 파일에 대한 수입을 작성하는 것입니다을 식별 할 수 분해 바이너리 파일 형식 내의 두 필드에 관심이 있습니다. 하나는 이고, 다른 하나는 압축되어 있습니다. (이 결론에 도달 한 방법은 here입니다.)
  • 나는이 파일을 열어 볼 수있는 뷰어 프로그램 (viewer.exe라고 부르겠다)이있다. 나는 이것이 약간의 단서를 제공 할 수 있기를 바라고있다.
  • 필자는 (곧) 검색 할 값을 비교하고 비교할 수 있도록 상호 해독 된 출력을 갖습니다.
  • 이 나는 ​​특정

상담자 알고리즘을 식별 할 수있는 자원을 주어진 최선의 전략은 무엇을
을 사용 중입니다 stackoverflow Q/A 가장 관련성이 발견된다?

현재 아이디어

  • 내가 키없이 바로 데이터에서 너 한테을 식별하는 파일과 viewer.exe를 갖는

  • 실질적으로 불가능하다는 것을 실감 나는 키가 있어야합니다 어딘가에. 공개, 비공개, 대칭 등 ... 알아내는 것이 좋을 것입니다.

  • OllyDbg를 사용하여 findcrypt 플러그인을 사용하여 viewer.exe를 첫 번째 단계로 분해하려고합니다. 나는 아직 성취하기에 충분하지 못하다.

자원 X, Y, Z (model2.vertices)를 나타내는 수레의 이진 목록이 내가이 우편 아카이브에서
decrypted data에 관심이 분야에서
전체 example file
extracted binary 및 정수의 2 진수리스트 (model2.faces). 또한 많은 무료 프로그램으로 볼 수있는 "stl"파일을 포함 시켰지만 STL의 데이터가 저장되는 이상한 방법으로 인해 원본 파일에서 기대할 수있는 것이 아닙니다.

내가 올리와 함께 프로그램을 분해
1
, 다음이의 수입 직전에 나는 porgram을 일시 정지 한 후 "모든 참조 된 텍스트를 검색"이 세스 지점에서 수행하는 방법을 알고있는 유일한 일을 한 진행 파일. 그런 다음 "crypt, hash, AES, encrypt, SHA 등"과 같은 단어를 검색했습니다. 나는 Mydata가 종종 4 바이트가 너무 길다는 사실을 잘 알 수있는 "Blowfish64"와 같은 것들을 생각해 내었습니다. (이것은 mod 12 = 0이 될 것으로 내재되어 있기 때문에) 이것은 내게 패딩처럼 보입니다. 64 비트 블록 크기 (정점 수가 홀수 일 경우 mod 8이 아닌 바이트가됩니다). 또한 다음과 같은 오류 메시지를 발견했습니다.

아래 이고르의 응답을 읽은 후 "잘못된 데이터 크기 (크기-4) 모드 8 0해야"여기 signsrch의 출력입니다. 나는 어떤 문제가 발생하지 그린 도트의이 이미지를 업데이트했습니다 INT3로 대체 할 때 관심의 파일을로드 할 때 실패하면, 프로그램은 빨간색 시작, 오렌지 수없는 경우. 어떤 점이 내가 아직 테스트하지 않은 의미합니다.

Signsrch results annotated

액세서리 정보

,451,515,
  • 임하여 윈도우 7 64 비트
  • viewer.exe는의 Win32 86 애플리케이션에게 데이터뿐만 아니라 암호화로 base64 인코딩이다
  • 이다
  • 해독 데이터 y를 3 플로트 (X를 나타내는 12 바이트 기는 , Z는
  • 나는 findcrypt 플러그인 OllyDb 버전 1.1을) 조정하지만 내 useage이 사람 youtube videos
+0

왜 수퍼 유저가이 질문을하지 않습니까? –

+0

IDA에는 알려진 기능을 식별하는 FLIRT라는 기술이 있습니다. 표준 암호 라이브러리를 사용하는 경우 알고리즘을 식별 할 수 있습니다. – CodesInChaos

+0

@ GregS 내가 물었던 것이 더 좋은 곳이라는 것을 알지 못했기 때문에. 나는 그것을 최대한 빨리 체크 할 것입니다 – patmo141

답변

1
당신은 좋은 암호화를 구별 할 수

(AES 재치와 함께 다음과 같은 제한된다 h XTS 모드 등)를 무작위 데이터에서 가져옵니다. 그것은 불가능합니다. ent를 사용하여/dev/urandom 데이터와 TrueCrypt 볼륨을 비교해보십시오. 서로 구별 할 방법이 없습니다.

편집 : 질문을 다시 읽으십시오. 어떤 대칭 알고리즘, 해시 및 모드가 사용되는지 (암호 해독 키가있을 때) 결정하는 가장 좋은 방법은 모두 시도하는 것입니다. 가능한 조합을 무작위로 시도하고 성공적으로 암호를 해독하는지 확인하기위한 테스트가 필요합니다. 이것은 TrueCrypt가 볼륨을 마운트하는 방법입니다. 알 고를 미리 알지 못하므로 처음 몇 바이트가 해독 된 모든 가능성과 테스트를 TRUE로 시도합니다.

+1

당신은 맞지만 OP를 읽지 않았습니다."열쇠가 없으면 데이터에서 알 고를 식별하는 것이 사실상 불가능합니다." 그래서 디스어셈블러로 알고리즘을 파악하려고합니다. – CodesInChaos

+0

감사합니다. 옵션 1 : 열쇠를 찾으면 모든 합리적인 방법으로 무력을 맹세하십시오. – patmo141

7

많은 암호화 알고리즘은 매우 구체적인 상수를 사용하여 암호화 상태를 초기화합니다. signsrch과 같은 프로그램으로 이진 파일에 이진 코드가 있는지 확인할 수 있습니다. 그럴듯한 히트가 발생하면 IDA에서 파일을 열고 상수 (Alt-B (이원 검색)가 도움이 될 것입니다)를 검색 한 다음 상호 참조를 따라 사용 된 키를 확인하십시오.

+0

와우, 꽤 훌륭합니다. 간판 출력의 사진을보십시오. 내가 Olly, IDA 등에서 아직도 익숙하지 않아서 다음의 상호 참조 부분은 어려울 것입니다. – patmo141

+0

알았습니다. 징조가 상수를 식별했음을 이해 합니다만 어떻게 검색합니까? 예를 들어, Blowfish bfp 테이블. 00856893 그 실제 상수 또는 그 프로그램 내에서 상수의 위치입니까? 순진한 응답을위한 나의 사과 – patmo141

+0

그것은 당신이 -L 옵션을 사용할 수있는 실제 상수를 얻는 것처럼 보입니다. 그러나 그 숫자가 파일 오프셋 인 경우 "파일 오프셋에 점프 이동"을 사용하여 이동할 수 있습니다. –