forfiles란?
파일을 선택하고 명령을 실행하는 유틸리티입니다. 매개변수와 명령 구문을 통해 파일 실행, 조회, 삭제가 가능합니다.
forfiles의 Default 위치
C:\Windows\system32\forfiles.exe
forfiles 매개변수 1)
/P <pathname> |
검색을 시작하는 경로 지정합니다. 기본적으로 현재 작업 디렉터리에서 시작 검색합니다.
|
/m <searchmask> | 지정된 검색 마스크에 따라 파일을 검색합니다. 기본 검색 맵은 * 입니다. 이는 확장자를 의미합니다. |
/s | 하위 directories에서 재귀적으로 검색하도록 forfiles 명령에 지시합니다. |
/c <command> |
각 파일에 지정된 된 명령을 실행합니다. 명령 문자열은 큰따옴표로 묶어야 합니다. 기본 명령은 “cmd /c echo @file”입니다.
|
/d
[{+\|-}][{<date> | <days>}] |
지정된 시간 프레임 내에 마지막으로 수정된 날짜가 있는 파일을 선택합니다. |
/? | cmd 창에 도움말 텍스트를 표시합니다. |
forfiles 변수설명
@FILE | 파일 이름 |
@FNAME | 확장명 없이 파일 이름 |
@EXT | 파일 이름 확장명 |
@PATH | 파일의 전체 경로 |
@RELPATH | 파일의 상대 경로 |
@ISDIR |
파일 형식을 디렉터리이면 TRUE로 평가, 그렇지 않으면 FALSE로 평가
|
@FSIZE | 파일 크기 (바이트) |
@FDATE | 파일에 마지막으로 수정한 날짜 스탬프 |
@FTIME | 파일의 마지막 수정된 타임 스탬프 |
예시 명령문
1. C:\inetpub\logs\LogFiles\W3SVC1의 경로에 있는 30일이 지난 .log 파일 삭제하기
forfiles /p C:\inetpub\logs\LogFiles\W3SVC1 /M *.log /D -30 /C “CMD /C del @file”
2. C 드라이브 경로에 디렉터리를 나열하기
forfiles /P c:\ /S /M * /C “cmd /c if @isdir==TRUE echo @file is a directory”
forfiles를 이용한 공격 기법
c:\windows\system32 폴더에 notepad.exe와 일치하는 항목이 있으므로 c:\folder\ 폴더에 normal.dll을 실행시킵니다. normal.dll 파일의 대체 데이터 스트림(ADS) 영역에 evil.exe이라는 변조된 악성파일을 실행시킬 수 있습니다.
※ 대체 데이터 스트림(ADS) 영역이란 윈도우 NTFS에서 데이터를 숨길 수 있는 영역입니다.
forfiles /p c:\windows\system32 /m notepad.exe /c #{process} 2)
forfiles /p c:\windows\system32 /m notepad.exe /c "c:\folder\normal.dll:evil.exe" 3), 4)
forfiles /p c:\windows\system32 /m calc.exe /c c:\tmp\pentestlab.exe 5)
forfiles를 이용한 공격 방안
- forfiles를 악용하는 공격을 Raw 데이터 로그에서 분석합니다.
[사진 1] forfiles를 사용하여 대체 데이터 스트림에 숨겨진 바이너리에서 새 프로세스 시작
실행되는 forfiles를 탐지하며, CommandLine에 유니크한 forfiles 명령어를 정규식판별, 정상, 비정상 프로세스 판단해주는 whiteText를 조건으로 만들어 판별해줍니다.
[사진 2] forfiles 조작 실행 필터 등록
[사진 3] forfiles 조작 실행 필터 탐지
– 공격자의 악의적인 행위를 탐지된 필터로 파악할 수 있습니다.
[참조]
1) 마이크로 소프트, https://docs.microsoft.com/ko-kr/windows-server/administration/windows-commands/forfiles
3) 마이터, https://attack.mitre.org/techniques/T1202/
4) 깃허브 블로그, https://lolbas-project.github.io/lolbas/Binaries/Forfiles/
5) news.knowledia, https://news.knowledia.com/US/en/articles/indirect-command-execution-64b33b0d54aa91071ab4b4c4aab6813e9808aaeb