본인 리버싱 경험 없음, 컴퓨터 보안 관련된 지식 거의 없음
그냥 평범한 컴공과 공대생임
키오스크에서 나온다는 악성코드가 도대체 뭐 하는 놈인지 알고 싶어서 테스트 진행
일단 파워셸에 무언가 붙여넣게 시킨다는걸 확인 -> 파워셸 스크립트는 실행만 안 하면 괜찮으니까 스크립트 받음 (확장자를 mp3파일로 위장하고 있음)
스크립트는 무언가 base64로 인코딩해뒀고, 이걸 디코딩 후 xor을 이용해 한번 더 디코딩 진행한 후, 메모리에다가 넣고 실행시켜버림.
메모리에 넣는 대신 파일로 저장하게 만듬.
여기부터 도와줘요 챗GPT
조언에 따라서 dnSpy라는 프로그램 받아서 분석.
C#같은 닷넷 프로그램을 분석할 수 있는 모양이었음.
이래저래 꼬아두고 난독화를 해두긴 했지만, 결국 다음과 같이 작동하는걸 확인.
작은 프로그램 코드가 하나 통째로 AES 암호화 -> base64 인코딩되어 들어있음. (이 때, 복호화에 필요한 키와 iv값은 base64 인코딩)
이 코드는 실시간으로 컴파일되어 실행됨.
프로그램을 해석해 보니 (도와줘요 챗GPT) 다른 블러핑하는 코드가 많고, 핵심적으로는 매개변수로 들어오는 byte스트림을 메모리에 집어넣어서 실행함.
그리고 바이트열은 다음과 같이 얻어짐.
프로그램에 리소스로 노이즈에 가까운 이미지 파일 (bmp)이 하나가 들어가 있음.
그 이미지를 불러와서, 특정 조작을 가하면 길다란 비트열이 나옴.
그 비트열을 AES 복호화를 해주면 (키와 iv는 전과 같음)
드디어 실제로 실행되는 코드 발견
문제는 실제로 실행되는 코드 역시 바이너리라는거지...
그래서 이 바이너리 파일을 분석할까 말까 하다가, 결국 이 분야 끝판왕인 (리버스 엔지니어링에 가장 자주 쓰이는 틀) Ghidra를 받았음.
당연히 코드는 복잡한데다가, 아무리 C하고 비슷하게 풀어서 보여준다고 해도 변수 명은 하나도 제대로 되어 있는게 없는 이해하기 어려운 코드가 나옴.
놀랍게도 챗GPT가 이런 코드와 심지어 어셈블리 코드 그 자체를 잘 이해하는데다가, 비슷하게 생긴 코드를 알아보는 능력도 좋음.
그런데 분석하다 보니까... 무언가를 복사해와서, 그 내용을 복호화하고... 그걸 실행시키는 코드...
챗GPT曰 혼자서 열심히 분석하면, 엔트리 포인트 찾고 어느 부분이 어떻게 되어있는지 확인한 후 dump해서 복호화 알고리즘 따라서 복호화해보면 최종적 페이로드를 구할 수야 있겠지만 몇 주는 걸릴지도
안해 ㅅㅂ
이게 마트료시카지
