
C# 표적 공격 정찰 도구
이것은 다양한 상황 인식 활동을 수행하는 사용자 지정 .NET 어셈블리입니다. 현재 여러 기능 세트가 있습니다:
이 도구를 작성할 당시 GhostPack이 개발 중인지 몰랐습니다; 결국 저희는 비슷한 시기에 도구를 공개했습니다. 사실 GhostPack이 현재 훨씬 더 많은 기능을 제공합니다. PrivescCheck 함수를 제거하는 이유는 SharpUp이 그 기능과 그 이상을 모두 포함하기 때문입니다.
핵심은 이 모든 것이 순수 .NET으로 구현되었다는 점입니다 - 즉, PowerShell이 필요 없습니다.
명령줄 매개변수로 구성 및 제어되므로 Beacon의 execute-assembly 지시문과 함께 사용하기에 적합합니다.
이 모듈은 호스트에서 여러 정보를 수집합니다. 출력이 매우 많을 수 있음을 유의하십시오. 다음을 표시합니다:
명령줄에 동사 'basic'을 전달한 다음 필요한 특정 검사를 전달해야 합니다. 두 번째 매개변수로 'all'을 전달하면 모든 검사가 수행됩니다.
| Check | Description |
|---|---|
| env | 모든 환경 변수를 표시합니다. |
| info | 호스트의 IP 주소와 주/부 OS 버전 식별자를 표시합니다. |
| mru | 다양한 "최근 사용" 목록을 검색합니다. 여기에는 실행 대화 상자 기록과 모든 버전의 Word, Excel, Powerpoint, Access, Publisher 및 Visio의 Office 파일 및 경로 MRU가 포함됩니다. 또한 특수 "Recent" 폴더의 위치를 표시합니다. |
| favourites | 즐겨찾기 폴더(기본적으로 사용자의 북마크)에 저장된 URL을 표시합니다. 현재 하위 폴더를 지원하지 않습니다. 나중에 수정하겠습니다. |
| mappeddrives | 사용자 세션의 네트워크 매핑 드라이브를 표시합니다. 중앙 파일 공유 및 홈 디렉터리를 빠르게 찾는 데 유용합니다. 매핑되었다면 유용한 데이터가 포함되어 있을 가능성이 높습니다. |
| installedapplications | 설치된 응용 프로그램을 나열합니다. 여기에는 관리자로 설치된 응용 프로그램(로컬 머신)과 현재 사용자가 설치한 응용 프로그램이 모두 포함됩니다. 레지스트리의 다른 위치에 나열됩니다. |
| onedrive | OneDrive에 대한 정보(동기화된 팀 사이트/테넌트 포함)를 표시합니다. |
'all'을 사용하면 자동으로 'proxycheck http://www.google.com'이 포함됩니다. 자세한 내용은 proxycheck 섹션을 참조하십시오.
모든 기본 검사 수행: beacon> execute-assembly /tmp/Reconerator.exe 또는 beacon> execute-assembly /tmp/Reconerator.exe basic all
MRU 열거만 수행: beacon> execute-assembly /tmp/Reconerator.exe basic mru
매핑된 드라이브만 나열: beacon> execute-assembly /tmp/Reconerator.exe basic mappeddrives
비교적 안전합니다. 시스템 레지스트리를 쿼리하므로 모니터링될 가능성은 낮습니다.
이 기능을 사용하면 LDAP 쿼리를 수행할 수 있습니다. 가장 쉬운 설명 방법은 예제를 통하는 것입니다.
다음은 W2K8DC를 도메인 컨트롤러로 사용하여 'dc=stufus,dc=lan' 도메인의 모든 사용자를 표시합니다:
beacon> execute-assembly /tmp/Reconerator.exe ldap "LDAP://W2K8DC/dc=stufus,dc=lan" "objectClass=user" 0
다음은 W2K8DC를 도메인 컨트롤러로 사용하여 'dc=stufus,dc=lan' 도메인의 최대 5명의 사용자를 표시합니다:
beacon> execute-assembly /tmp/Reconerator.exe ldap "LDAP://W2K8DC/dc=stufus,dc=lan" "objectClass=user" 5
다음은 W2K8DC를 도메인 컨트롤러로 사용하여 'dc=stufus,dc=lan' 도메인의 도메인 관리자 그룹의 모든 구성원을 표시합니다:
beacon> execute-assembly /tmp/Reconerator.exe ldap "LDAP://W2K8DC/dc=stufus,dc=lan" "(&(objectClass=group)(cn=Domain Admins))" 0
다음은 W2012DC를 도메인 컨트롤러로 사용하여 'dc=stufus,dc=lan' 도메인의 도메인 관리자 또는 엔터프라이즈 관리자 그룹의 모든 구성원을 표시합니다:
beacon> execute-assembly /tmp/Reconerator.exe ldap "LDAP://W2012DC/dc=stufus,dc=lan" "(&(objectClass=group)(|(cn=Enterprise Admins)(cn=Domain Admins)))" 0
지정한 도메인 컨트롤러로 네트워크 트래픽이 발생합니다. 명확히 하자면, LDAP(RPC 등이 아님)을 사용합니다.
호스트의 DNS 서버를 사용하여 DNS 쿼리를 수행합니다.
www.google.com 확인:
beacon> execute-assembly /tmp/Reconerator.exe resolvehost www.google.com
도메인 컨트롤러로 DNS 쿼리가 생성되지만, 합법적인 DNS 요청의 양이 많아 경보로 인식될 가능성은 낮습니다.
이 기능을 사용하면 Windows Search(이전의 Windows 인덱싱 서비스)와 상호 작용하여 흥미로운 파일과 폴더(및 해당 내용)를 매우 빠르게 검색할 수 있습니다. 이메일은 일반적으로 인덱싱되지만 네트워크 폴더는 그렇지 않으므로 사용자의 홈 디렉터리가 원격에 저장된 경우 완벽하지 않을 수 있습니다. 하지만 매우 빠릅니다.
Windows Search에 대한 인터페이스는 SQL과 유사합니다. 이 구현에서는 'WHERE' 절의 내용을 지정할 수 있습니다. 예제로 설명하는 것이 가장 쉽지만, 가능한 모든 조건을 알고 싶다면 MSDN을 읽어야 합니다.
'password'라는 단어가 포함된 모든 인덱싱된 항목 찾기 (파일 및 이메일 내용 검색):
beacon> execute-assembly /tmp/Reconerator.exe indexsearch "CONTAINS('password')"
경로 또는 파일명에 'stufus'라는 단어가 포함된 모든 인덱싱된 항목 찾기:
beacon> execute-assembly /tmp/Reconerator.exe indexsearch "System.ItemPathDisplay LIKE '%stufus%'"
파일명에 'stufus'가 포함되거나 'secret'이라는 단어가 포함된 모든 인덱싱된 항목 찾기:
beacon> execute-assembly /tmp/Reconerator.exe indexsearch "System.ItemName LIKE '%stufus%' OR CONTAINS('secret')"
이를 의심스러운 활동으로 간주할 만한 사항은 알려져 있지 않습니다.
지정된 URL을 방문할 때 사용될 프록시 서버를 반환합니다. 이는 URL에 따라 다른 프록시가 있거나 다양한 복잡한 제외 규칙이 있을 수 있는 상황을 처리하기 위한 것입니다. 관심 있는 URL을 매개변수로 전달합니다.
'basic all'을 지정하면(위 참조) 자동으로 http://www.google.com에 대한 proxycheck가 포함됩니다. 대부분의 조직에서 내부 인터넷 접속이 아닌 모든 외부 접속에 대해 하나의 아웃바운드 프록시를 사용한다고 가정합니다.
www.google.com을 방문할 때 사용될 프록시 서버 표시:
beacon> execute-assembly /tmp/Reconerator.exe proxycheck www.google.com
https://www.mwrinfosecurity.com을 방문할 때 사용될 프록시 서버 표시:
beacon> execute-assembly /tmp/Reconerator.exe proxycheck https://www.mwrinfosecurity.com
로컬 활동이며 합법적인 활동입니다. 의심스러운 것으로 간주될 만한 사항은 알려져 있지 않습니다.
여러 권한 상승 벡터를 탐색하고 가능 여부를 보고합니다. 현재는 1개입니다.
위의 BASIC 모듈과 마찬가지로 명령줄에 privesccheck all을 지정하여 모든 검사를 시도하거나, 필요한 경우 특정 검사를 지정할 수 있습니다.
명령줄에 동사 'privesccheck'을 전달한 다음 필요한 특정 검사를 전달해야 합니다. 두 번째 매개변수로 'all'을 전달하면 모든 검사가 수행됩니다.
| Check | Description |
|---|---|
| alwaysinstallelevated | 'AlwaysInstallElevated' 키가 1로 설정되어 있는지 확인합니다. 설정된 경우 모든 MSI 파일이 로컬 관리자로 실행됩니다. |
| Check | Notes |
|---|---|
| alwaysinstallelevated | 로컬 레지스트리 쿼리입니다. 악의적인 것으로 식별될 가능성은 낮습니다. |
모든 권한 상승 검사 시도:
beacon> execute-assembly /tmp/Reconerator.exe privesccheck all
AlwaysInstallElevated 레지스트리 키만 확인:
beacon> execute-assembly /tmp/Reconerator.exe privesccheck alwaysinstallelevated
Visual Studio 2019에서 컴파일하십시오. 현재는 .NET v4를 대상으로 합니다. 원한다면 컴파일 기본 설정에서 변경할 수 있습니다.