Citadel 악성코드 분석 3 고급 분석

악성코드 및 포렌식|2021. 4. 6. 13:45

일단인 api log에서 잘보면

 

write processmemory 에서

fffff가나오면 자기자신한테 쓰고있는데

 

 

자기메모리를 다시구성하는 것이다

 

실질적으로는 write process를 6번하고나서 그이후 내용이실행이되는 것을 보는것을 알수있다.

그러면 실질적으로는 패킹이안되있지만

 

패킹이 되있는 것이다

 

 

 

그래서 ida 로 writeprocessmemory 를 갑니다.

 

 

 

 

 

근데 여기서 보니까 writeprocessmemory 는 

 

xrefs 즉 참조 레퍼런스가 존재하지않는다

 

그러면 어쩔수없이 올리에서 해야하는데

 

이런것이나오면 ida에서 분석하기가 어렵습니다.

 

데이터가 써진거기때문에

 

 

 

그래서 이곳에와서 브레이크 포인트를 걸었고

 

 

 

ida에서 분석하기어려운게 writeprocess 메모리를 찾지를 못하는데

 

실행이됬었는데 그게 실제적으로는 dll에 들어가있지 않았다는 것이다

실제로 브레이크포인트를 걸고 f9를 눌렀을떄

 

스택에 writeprocessmemory 가 걸려있었고

 

 

그래서 00437c82로 가면됩니다.

 

 

그래서 [esp] 로 갑시다.

 

그래서 esp 주소로 왔을떄

 

분석이되지않은 내용이나오는데

 

anlyzing을 언제하냐면

로딩할때 메모리에 최초로 로딩할때

올리디버거가 해석을 해주는데

 

깨졌다는 이유는 덮어씌워진 메모리입니다.

 

그럴때는 ctrl+a를 하면 복구를해준다.

 

 

 

 

그래서 이렇게 복구를 해줍니다.

 

 

ctrl+ a가 이런의미이고

 

 

그래서 6번 정도 수행이된게 보이게되긴 합니다.

 

 

아까 봤던 것처럼

 

근데 이런파일들은

 

WriteFile 을 한 흔적들을 확인을 할수있다.

그래서 ctrl + g를 해서

WriteFileW를해서 찾고 브레이크 포인트를 한다.

 

 

 

WriteFile 을 한 흔적들을 확인을 할수있다.

그래서 ctrl + g를 해서

WriteFileW를해서 찾고 브레이크 포인트를 한다.

 

이것을 6번을 해보게되면 f9를

 

흔적을 찾을 수 있었다

writeprocessmemory를 6번했던것을 알았기 때문에 할수 있는 동작입니다.

 

 

여기서 메모장에 api 함수를 사용하는 것들을 다알 수있다

 

analysis 파트에서

 

그리고 이파일을 분석을 진행해봅니다

 

그전에했던것은 us.exe 였고 ulzeewri는 튀어나온 파일이기때문에

 

저파일을 sysanalysis에서 실행하면

아까보다 훨씬 많이 writeprocessmemory 가 튀어나오게됩니다.

제경로에있으니까

 

앞에있던 내용보다 많이써지게 되는 것이고

 

 

프로세스 메모리 쓴것들에 하나를 실행하고있고

 

한 3개정도 실행하는 것으로 보입니다.

 

 

일단은 스냅샷을 돌리고 다시 팁을 줍니다.

 

 

 

 

us.exe를 다시열고

 

 

이렇게 올리디버거에서 키자마자

ctrl+ e를 눌러 cc로 바꿔줍니다.

 

 

그리고 

 

저장을 하자

 

그리고 save file을 합니다.

 

일단은 이렇게

 

나오게된다

 

올리디버거에서도 설정을 해야하는데

 

 

이곳을 가서

 

 

make ollydbg justintime debugger를 합니다.

 

그리고 confirm 누르기

 

 

 

그러면 이 디버그 버튼이 생겼기 떄문에

 

디버그를 누릅니다.

 

 

 

그러면 올리디버거에서 이렇게 잘 붙게됩니다.

 

 

 

그리고 애를 ctrl+e 를 해서 다시 55로 바꿔 줍니다.

 

그리고 실행을하면 

 

안티디버깅에 걸립니다.

 

 

애를 디버그 누르면

 

이제튀어나오는 것은

 

진짜 악성코드를 분석해야하는 악성코드 입니다.

 

 

실제로 us는 설치만 해서  파일을 만들어주고

 

파일을 만들어주는 내용이

 

createfile이 없는것을 봐서 다른 방식으로 사용하는 것같다.

 

 

 

 

그래서 일단은 이렇게 들어가서 ctrl+g 를해서 deletefileW

 

쓰레드내부에서 만드는게아니고

 

별도의 쓰레드를 만들다보니까 누락이되는것같다

 

 

그리고 ogovazze.exe파일은 랜덤하게 이름이 생성되는 것을 알 수 있습니다.

 

잘보면 스택창에 tmp파일을 지우고있는것을 알 수 있고

 

 

 

 

레지스트리에 등록된 것을 보고싶다 이러면 찾으면되고

 

아까는 ida에서 분석이 불가능 했으니

 

메모리에서 전부다 write된 상태를 보고싶은 경우에는

 

writeprocess가 전부다 끝난상태에서

 

 

디버깅중인 파일을 덤프하는 것입니다.

 

 

진행을해봅니다.

 

그래서 이렇게 ida로 보는것이 가능합니다.

 

 

 

 

특징이 http 요청이 암호화되있는 정도를 할수 있다.

 

 

 

 

댓글()