Forensic 60

[디스크 복구] GoldenEye 랜섬웨어 MBR 복구

*본 내용은 공부를 목적으로 만들어진 내용입니다. 악용 시 법적인 책임을 물 수 있습니다. 앞 시간에 Petya 랜섬웨어를 복구 하는 방법을 배웠었습니다. 이번 시간에는 Petya 랜섬웨어의 변형된 형태인 GoldenEye 랜섬웨어를 복구하는 방법을 배워보겠습니다. http://m.boannews.com/html/detail.html?idx=52668 보안뉴스를 보게 되면 GolednEye 랜섬웨어에 대한 내용들이 자세히 설명되어 있으니 참고 해주시길 바랍니다. 사실 Petya 랜섬웨어랑 별반 다를거 없은 GoldenEye 랜섬웨어는 XOR 연산으로 0x07 변형이 되었고, 감염시키는 오프셋이 0x7202가 아니라 0x4602 입니다. 그래서 앞서 배웠던 Petya 랜섬웨어 복구하는 것이랑 똑같이 하시면..

[디스크 복구] PeTya 랜섬웨어 감염 MBR 복구

*본 내용은 공부를 목적으로 작성하는 글임을 알려드립니다. 이번에 다뤄볼 내용은 2017년 한국 정보통신 학회에서 투고된 "랜섬웨어 Petya에 대한 분석과 대응방안" 이라는 논문이다. 원문은 다음 링크를 타고 들어가시면 확인할 수 있다. https://scienceon.kisti.re.kr/srch/selectPORSrchArticle.do?cn=NPAP12899226 ABSTRACT 랜섬웨어는 주로 정부 기관과 금융기관, 기업 등을 대상으로 파일 또는 디스크 부팅 영역(BR)을 암호화하여 금전적인 피해뿐 아니라 개인정보 탈취 등의 보안 이슈를 초래해 왔다. 본 논문에서는 NTFS 파일 시스템 및 랜섬웨어 Petya에 대해 설명하고 포렌식 기법을 적용하여 MBR 영역 복구에 대한 방법을 다뤄본다. 1...

5주차 과제

배열 배열이라는 개념을 접하기 전에 지금까지 우리는 메모리에 저장 공간을 만들기 위해 변수라는 것을 사용했습니다. 예를 들어 사과 10개를 담기 위해 AppleBox라는 변수명으로 변수를 하나 만들어 줬습니다. 하지만 또 다른 예로 5과목의 점수를 처리하고 싶을 때는 kor, eng, math, sci, social 등 하나씩 다 변수를 지정해줬습니다. 이렇게 하나씩 변수를 선언하면 점수도 일일이 하나씩 넣어줘야 하는 번거로움이 있기 때문에 우리는 배열이라는 개념을 알고 있어야 합니다. 쉽게, 배열은 같은 형태의 많은 데이터를 반복하여 처리하기 위해서 메모리에 "연속적"으로 저장해놓고 쪼개서 사용하는 방법이라고 생각을 하시면 됩니다. 잘 이해가 안가시겠지만 예제로 보겠습니다. %p 서식 지정자에 대해서는..

[디스크 복구] MBR과 BR영역이 모두 손상된 파티션 복구

*지금부터 작성을 하는 공부들은 악용을 할 시 법적인 책임을 질 수 있으니 공부 용도로만 쓰길 바랍니다. 이번에 배울 것은 MBR영역과 VBR(Volume Boot Record), 파티션 시작 위치(BR)을 모두 특정 데이터로 덮어씌워 부팅이 불가능하도록 한 악성코드에 감염되었을 때 복구 하는 방법입니다. 복구를 진행하는 단계를 살펴보겠습니다. 1. MBR, VBR의 위치 확인 2. MBR, VBR 복구 3. 복구된 MBR과 VBR을 원래의 위치로 복사 실습파일인 vmdk를 가상머신으로 실행을 시키면 부팅이 정상적이지 않는 것을 볼 수 있습니다. 복구를 위해 vmdk를 hxd 에디터로 열어 보겠습니다. 근데 우리가 디스크를 보통 열어보면 MBR영역이 나와야 하는데 여기서는 vmdk의 예약영역이 자리 잡게..

[디스크 복구] NTFS 파티션 복구

저번 시간에 이어 NTFS도 바로 복구를 해보겠습니다. 마찬가지로, 악용을 하시면 법적인 책임을 물 수도 있으니 공부할 때만 사용하십시오. 배우기에 앞서 선행되어야 하는 내용은 다음과 같습니다. NTFS 구조 : https://lemonpoo22.tistory.com/202 MBR 구조 : https://lemonpoo22.tistory.com/23 실습할 내용은 다음과 같습니다. BR영역이 손상된 파티션 복구 알아야 할 내용 : 파티션 정보, LBA 시작주소, 파티션 총 섹터 수 먼저, 실습파일을 FTK로 열어보겠습니다. 파티션 1개가 보이고, Unrecognized로 보이는 것으로 보아 손상된 파티션임을 알 수 있었습니다. 그래서 FTK를 닫고, Hxd 에디터로 디스크 정보를 한번 보겠습니다. 영역 ..

[디스크 복구] FAT32 파티션 복구

*지금부터 작성을 하는 공부들은 악용을 할 시 법적인 책임을 질 수 있으니 공부 용도로만 쓰길 바랍니다. 배우기에 앞서, 사전 지식이 필요하여 2개를 보고 오시는 것을 추천드립니다. MBR 구조 : https://lemonpoo22.tistory.com/23 FAT32 구조 : https://lemonpoo22.tistory.com/84 우리가 Windows 시스템에서 가장 많이 사용하는 파일 시스템 포맷인 FAT32, NTFS 포맷의 파티션이 손상되었을 경우 복구하는지 배워볼 것 입니다. 우선 실습 파일은 따로 올리지 않겠지만, 복구하는 방법이 동일하기 때문에 혹시 직접 실습을 해보고 싶다면, 가상 디스크를 하나 만들어서 똑같이 영역을 손상시켜 공부해보는 것을 추천드립니다. 실습 시나리오는 다음과 같다..

4주차 과제

표준 라이브러리 함수 함수는 기능을 수행하는 코드 단위를 말합니다. 지금까지 사용해왔던 main 함수가 대표적인 함수입니다. 그리고 입.출력을 할 때 사용하던 printf()와 scanf()도 함수이고 특정 기능을 미리 약속하고 프로그램에서 바로 사용할 수 있게 구현되어 있는 함수입니다. 이런 함수처럼 프로그램에서 바로 사용할 수 있게 구현되어 있는 함수를 표준 라이브러리 함수라고 합니다. 그리고 이런 함수는 stdio.h 헤더 파일에 포함되어 있습니다. 함수를 정의할 때 필요한 3가지가 있습니다. (꼭 기억하셔야 합니다) 함수 정의 : 함수를 실제 코드로 만드는 것이며 기능을 구현합니다. 함수 호출 : 함수 호출을 해야지 함수를 사용할 수 있습니다. 함수 선언 : 프로그램의 상단에서 어떤 함수를 사용할..

3주차 과제

이번주는 Chapter 05 ~ 06에 대해서 배워보겠습니다. 먼저, 우리는 1~2주차에 다뤘던 내용들은 main함수를 읽어와서 항상 차레대로 실행되는 프로그램을 다뤄왔었습니다. 하지만 연산자를 배우면서 참, 거짓 조건을 다뤄 참이면 A값, 거짓이면 B값을 다루는 것은 했으나 깊게는 다루지 않았습니다. 그래서 이번에 배우는 제어문은 조건에 따라 실행하거나 실행하지 않아야 할 때 사용하는 함수들 입니다. if문(조건문, 제어문) if문은 말 그대로 만약에라는 뜻을 가지고 있습니다. 그리고 조건식과 실행문으로 나뉘는데 예를 한번 보겠습니다. "크리스마스 때까지 여자친구가 없으면", "친구가 소개팅을 주선해준다" 라고 했다고 가정합시다. 여기서 조건문과 실행문을 나뉘어 보겠습니다. 조건문 : 크리스마스 때까지..

NTFS(New Technology File System) File System Structure

저번 시간에는 FAT32 파일 시스템에 대해서 배워봤는데, 이번 시간에는 NTFS 파일시스템에 대해서 배워보겠습니다.NTFS 파일시스템이란?NTFS 파일시스템은 Windows NT의 등장으로 최초 서버용 파일시스템으로 등장했습니다. 그 전 개인용 운영체제를 사용했던 시기에는 FAT 파일시스템이 주로 사용되었지만, 용량의 한계에 있어 대용량 서버 운영체제인 Windows NT에 적합하지 않은 파일시스템이였기 때문에 다양한 기능, 뛰어난 확장성, 대용량 장치 지원을 지닌 파일시스템인 NTFS를 개발하였습니다. NTFS VersionNTFS는 Windows NT 운영체제에 처음 사용된 이후, Windows 2000, XP, 7, 8 들을 거쳐 많은 운영체제에 사용되고 있는데, 운영체제마다 NTFS 버전이 다르..

2주차 과제

이번에 해야 할 주차는 2주차 입니다. 3장과 4장에 대한 내용을 설명을 하겠습니다. 변수 변수는, 프로그램에서 데이터를 메모리에 저장하기 위해 사용되는 일련의 번호박스입니다. 예를 들어 택배를 하나 받았다고 생각을 해봅시다. 우리가 옷을 주문하고 주문한 옷이 택배 박스로 왔을 때 안에 들어있는 내용물은 아! 옷이 들어있구나 하고 뜯어볼 것 입니다. 이처럼 내용물을 저장할 수 있는 박스가 일종의 변수가 되는 것입니다. 그림을 보겠습니다. 똑같이 박스와 옷을 기준으로 설명을 하면 A박스에 옷 대신에 10이라는 값이 들어있다고 생각하시면 됩니다. 일단 변수에 대해서는 이정도만 하고 나중에 코드로 보여드리겠습니다. 변수를 선언하기 위해서는 자료형을 알아야 합니다. C언어에서 자료형은 int(정수), float..