좋아요, 이 챕터를 마치죠 메타 디렉터리를 살펴봅시다 어떤 파일이
있는지 어떻게 값들이 계산되는지 보죠
네 꼭 알 필요는 없어요 제가 보기에 알아야 할 건 조작이 들통날
경우를 대비한 거예요 전체 구조를 이해할 수 있어서 좋아요 그렇게
복잡하지 않아요
디렉터리를 엽니다
이 앱을 컴파일해야 해요
그걸 다시 치면서 자료를 모았어요
여기 이건 마지막 단계에서 이미 봤죠
인증 정보를 포함하는 메타 디렉터리입니다
안에 뭐가 있는데요?
이건 RSA 파일이고 이건 서명이에요
네 ASF 확장이 있죠 시그니처 파일인 ASF 확장과 매니페스트 파일인 MEF
확장이요
네 manifest EMF를 보죠 여기 이 바이너리에 들어있는 단일 Android 파일들을
볼 수 있습니다
예를 들어, 여기 게임 파일이 있죠 음악 파일입니다
이 파일 아래에는 SHA1 숫자가 있습니다 base64 인코딩된 스트링 같군요
끝에 등호가 있어서 볼 수 있어요
이제 문자열을 가지고 이게 뭔지 보죠
새 단말기를 열고 네 여기를 보시면 이진법처럼 보이네요 거에요.
이진법 콘텐츠 같네요
이걸 x60으로 연결하면 여기 보이는 건 해시처럼 생겼네요
이게 파일의 해시죠
문제는 해시가 뭐냐는 거죠
해시는 일방적인 운영이에요
네 그래서 입력값을 복잡한 알고리즘에 넣으면 결국 단일 비트를
나타내게 되죠
이건 일종의 체크섬이에요
체크섬은 아니지만 이러면 좀 더 쉬워지죠
네, 당신 파일에 체크섬 같은 게 있네요
해시의 장점은 이걸 역전시킬 수 없다는 거죠 그래서 입력을 복잡한 알고리즘에
던져 이 값을 얻지만 이 값에서 입력으로 반환할 순 없어요
또 좋은 점은 입력에서 하나라도 바꾸면 완전히 다른 해시가 나온다는 거죠
이걸 보여드릴게요
네 이제 SHA1이 원래 파일을 다이제스트한 걸 계산하고 수정을 해서 차이를
보죠
지금 이 모든 게 필요한 이유는 발견을 방해하기 위해서예요
이제 이 해시를 계산해보죠 어떻게 이게 가능하죠?
우선 디렉터리로 가죠 안 그러면 전체 경로를 제공해야 하니까요
네, 정말 말도 안 되겠죠
자산, 음악, 게임 파일이 있습니다
이 디렉터리를 열어 이 파일을 먼저 보여드리죠
게임의 기원이 있습니다
이걸 틀면 여기나 여기 배경 음악이 안 보일 거예요
이게 게임 음악이에요
좋아요
이제 해시를 계산해보죠 이건 오픈과 함께 처리됩니다
이건 이미 여러분의 Linux 배포판에 설치되어야 합니다
아주 편리한 도구죠
열겠습니다 열어서 SSL을 쓰고 SHA One이라고 하죠 새로운 SHA One을
생성하고 싶으니까요 이 파일 중 일부를요 이진 모드에서 읽으세요 그리고 이름을 정의해야죠
게임이죠 Ogg 그리고 여기서 볼 수 있는 건 오, 이건 꽤 똑같아 보이네요 하지만 base64 암호화 해야 합니다 여기 볼 수 있어요
네, 이제 똑같네요
두 줄을 비교하면 이건 동일합니다
여기 SHA1 다이제스트도 있어요
이 시합에는 SHA1의 모든 파일이 담겨 있어요
이제 서명 파일을 보죠
그럼 옛날 디렉토리 원본 회의로 가서 이제 서명 파일을 보죠
네 서명 파일이 처음엔 manifest MF와 비슷해 보이죠 왜냐하면 이제 모든 파일과
그에 상응하는 SHA1 해시가 있거든요 ,
한번 보죠
이 녀석은 좀 다른 것 같아요
네 이 파일이 manifest m f 항목 위에 날카로운 해시를 만들기 때문이죠 name과
sha 1에요
좀 복잡한 건 알지만 이걸 한 조각으로 나누죠
그래서 나란히 파일을 열었어요
네
왼쪽엔 화물 목록이 있어요
오른쪽은 서명 파일입니다
왼쪽은 이름 태그 안에 SHA1 해시 오버가 있어요
오른쪽엔 매니페스트 파일의 이름 태그와 해시 위에 서명이 있어요
네 그래서 먼저 걱정 마세요 모든 단계는 서명 프로세스로 자동으로 수행되니까요
애플리케이션에 서명하면 자동으로 처리됩니다
이건 몰라도 돼요
하지만 값이 어떻게 생성되는지 아는 게 좋습니다 왜냐하면 이 파일의 해시를 수정하거나
조정해야 하는 응용 프로그램이 있을 수 있으니까요 이런 지식은 유용합니다
좋아요
왼쪽에 다시 요약하자면 매니페스트 MFW 이 파일들에 대한 모든 해시가 있어요
오른쪽엔 파일 이름과 전에 계산된 해시에 관한 새 해시가 있습니다
이런 파일들은 응용 프로그램이나 파일이 감지되거나 손상된 파일에 영향을 받지
않도록 올바른 상태인지 확인합니다
파일이 손상됐다면 이 파일이 사실을 알 수 있죠
좋아요
두 사람에 대해선 이 정도만 알면 돼요
마지막은 서명이에요
네 이것도 살펴볼 거예요 물론이고요 그다음 현실 세계의 취약점을 살펴볼
거예요 서명 두 개와 네 신청서에 서명하는 거요
네 파일에 주소를 적어야 해요 이 응용 프로그램의 서명이죠 이걸 프린트하면
돼요
새 터미널을 열고 키 도구 명령을 사용합니다 세 번째 프린트를 이용하고 파일
에러를 a로 제공합니다 확대해서 좋은 개요를 보여드리겠습니다
여길 보시면 네, 이 파일은 다음과 같은 인증서와 함께 서명됐습니다 서명 과정에서
이게 우리 인증서였죠
하지만 이걸로는 아무것도 못 해요
이건 공적인 정보예요
개인 키가 없으면 이걸 쓸 수 없어요
하지만 그런 걸 읽는 방법을 아는 건 좋습니다 왜냐하면 추가 정보를 찾을 수도 있으니까요
일종의 추가 회사요 이 앱을 개발하거나 그런 걸 하는 회사요
여기 이 파일을 살펴볼 가치가 있어요
좋아요
그게 마지막 점이에요
Android 구조를 완전히 이해하실 수 있도록요
보세요
좋아요
지금은 이게 마지막이에요
네
좋아요
메타 디렉토리에 관한 거예요
네 이제 Android 응용 프로그램 구조 전체를 완전히 이해하셨죠 정말 멋져요
네 올해가 훈련의 기반이 되는 해예요 네 훈련이나 도전 같은 거요
컷
좋아요
미디어 디렉터리에 대해 아셔야 할 건 이게 전부입니다
Android 앱 구조에 대한 이 이론 전체를 드디어 끝냈습니다 이런 것들이 어떻게
합쳐지고 어떻게 작용하는지 아는 건 정말 좋죠
네, 앞으로의 과제에서도 아주 편리하죠
네 다음 섹션에선 실제 사례를 살펴볼 겁니다 실제 취약성요 그리고 마지막으로 이 챕터를
위한 마스터 챌린지가 있습니다 해당 리소스를 수정해야 하는 거죠 이제 여러분은
이 과제에 필요한 모든 기술을 갖췄습니다
이 디렉터리들을 편하게 살펴보시고 익숙해지시기 바랍니다
질문이 있으시면 댓글 창에 남겨 주세요
다음 시간에는 여러분을 만나길 기대하고 있겠습니다