Malware/윈도우즈 보안과 악성코드 기초6 [악성코드] 6주차, 정적분석 [실습 1-1] Lab01-01.exe, Lab01-01.dll 1) Virustotal에 업로드 하고 보고서를 확인하자. 기존 안티바이러스 정의된 것과 일치하는가? Lab01-01.dll : 37개가 넘는 엔진에서 악성코드로 탐지하는 것을 확인할 수 있다. Lab01-01.exe : 48개가 넘는 엔진에서 악성코드로 탐지하는 것을 확인할 수 있다. 둘 다 윈도우 32bits에서 동작한다는 것을 알 수 있다. 반복적으로 Trojan 형태가 보이는데 Trojan 형태로 은닉되어 있다가 활동하게 될 확률이 높은 것을 알 수 있다. A. 악성코드의 시그니처로 판명된다. 2) 이 파일의 컴파일 시점은? 컴파일 시점은 Time Stamp 정보를 통해서 알 수 있었다. PEFile 헤더를 확인한다. Lab01-01.. 2021. 11. 19. [악성코드] 7주차, 동적분석 Lab01-01 동적 분석 먼저, lab01-01.exe를 실행하였지만 화면에 뜨지 않는 것을 알 수 있었다. 이것은 lab01-01.exe가 어떻게 동작하는지 웬만해서는 알기 어렵다는 것을 뜻한다. ProcessMonitor를 통해 Lab01-01.exe가 실행된 것을 확인하였다. 레지스트리와 관련된 것을 나열하고 경로상에 특별한 것은 보이지 않는다. 특별한 조짐이 없기 때문에 잘못 실행하였다고 생각할 수 있다. 따라서, 다른 방법을 통해 실행한다. 명령 프롬프트를 통해 확인한다. Lab01-01.dll을 사용하는 것을 알 수 있다. Kernel132.dll이 생성되었다. ProcessMontor의 Handles를 이용하여 어떤 dll을 사용하고 있는지 알 수 있다. 악성코드에 감염된 상태이기 때문에 .. 2021. 11. 19. [악성코드] 5주차 과제 실습 1 – VirusTotal 사이트에 접속해서 간단한 프로그램을 검증 Visual C++로 만들어졌고 Window32 bits 파일이라는 것을 알 수 있다. 파일의 생성 날짜와 언제 최근 올라온 파일인지 알 수 있다. 실습 2 – WinMD5Free SW를 다운받아 설치 및 검증 웹 사이트에 들어가서 WinMD5를 다운로드 받는다. 해당 파일을 넣고 해시 값을 계산하여 웹 사이트에 있는 해시 값과 비교한다. Verify를 누르면 해시 값이 일치하는지 아닌지를 알려준다. 파일의 변조 여부를 확인하는 실습이다 실습 3 – Strings를 다운받아 설치하고 악성코드가 어떤 결과로 나타나는지 실습 목록을 볼 수 있다. 우리가 다운로드 받은 strings.exe 파일이 있는 것을 확인할 수 있다. String.. 2021. 11. 19. [악성코드] 4주차 과제 1. CRACKME #1의 패치를 다른 방법(코드 변경)으로 크랙 exe 파일을 열었을 때 나오는 화면이다. exe 파일을 연 후, 확인을 누르면 이와 같은 화면이 나온다. 이 화면을 보았을 때 00401024의 CMP문에서 EAX와 ESI를 같게 만들어서 ZF=1이 되도록 한다면 OK가 나오는 화면으로 넘어간다. 그렇다면 CMP 조건에 같은 값을 넣는다면 무조건 ZF=1이 되어서 OK 문구가 뜰 것이라는 생각이 들었다. CMP는 EAX와 EAX의 값을 비교하게 되므로 OK 문구가 뜰 것이라고 예상된다. EXE 파일을 저장하고 실행해보겠다. OK 문구가 뜨는 것을 확인하였다. 2. 간단한 윈도우 실행파일 작성 후, 분석 (파일 종류, 컴파일 환경, 섹션의 개수, 생성 시간 등) 소스 파일을 작성하였다. .. 2021. 11. 19. [악성코드] 3주차, 문자열 패치 실습 첫 번째 방법, 문자열 버퍼를 직접 수정 먼저, 메인 화면으로 들어간다. 문자열을 변화할 title의 Dump Window에서의 위치를 파악한다. Dump Window에서 [ctrl] + G를 통해 해당 문자열이 있는 위치로 이동한다. 해당 문자열을 확인하였다. [ctrl] + E를 통하여 해당 문자열을 수정한다. 수정된 모습이다. 다음으로는 수정이 잘 되었는지 확인해야 한다. 이제 Debug -> Run을 클릭하여 변경된 모습을 확인한다. 두 번째 방법, 다른 메모리 영역에 새로운 문자열을 생성 전달 [Ctrl] + G 명령어를 통하여 문자열 저장 장소로 이동한다. NULL Padding 영역을 확보한다. [Ctrl] + E 명령어를 통하여 변경하고 싶은 문자열 저장 문자열을 변경한 후, 변경한 문자열.. 2021. 11. 19. [악성코드] 2주차 과제 1. HelloWorld.cpp 코드 창 캡쳐 및 실행화면 캡쳐 2. 디버깅과정에서 Entry Point와 main() 함수 찾아서 캡쳐 EP(Entry Point) - 윈도우 실행파일의 코드 시작점 Main() 함수 - [F7]로 main()에 진입하여 main 함수를 확인하였다. - [F8](step into)로 진행하면 메시지 창이 출력되는 것을 확인하였다. 2021. 11. 19. 이전 1 다음