목록Computer App Penetesting (45)
외로운 Nova의 작업실
- 리눅스 gcc test.c -o test.exe 프로텍트 미적용 gcc test.c -o test.exe -fno-stack-protector -no-pie 32비트 컴파일 gcc -o test test.c -m32 오브젝트 파일 생성 gcc -c test.c via test.c #파일만들기 및 수정 $ objdump -d shellcode.o $ objcopy --dump-section .text=shellcode.bin shellcode.o $ xxd shellcode.bin - gdb ni : nexti 함수내부로 안들어갑니다. si : stepi 함수내부로 들어갑니다. b : b *함수주소 또는 b 함수이름 으로 브레이크를 겁니다. [print 함수이름]을 하면 함수의 주소를 알 수 있습니다...
책이제 리버싱 입문 책 공부를 종료하려고합니다. 마지막으로 지뢰찾기 맵핵에대한 내용이 있지만 가상머신을 사용했을때 많이 느려서 실습이 어려울 것 같아 안하려고합니다. 노트북 사양도 좋지않아서.. 특히 지뢰찾기는 32비트 설치파일도 구하기 힘들다보니 실습이 어려워 안하겠습니다. 단, 마지막장에 있는 공부해야할 고급 기술들은 정리해볼까합니다. - 공부해야할 고급 기술 1. 64비트 아키텍처 및 64비트 응용프로그램 리버싱 2. IDA Pro : 전문적인 리버서는 ollydbg보다 IDA pro를 많이 사용합니다. 3. 언패킹 기술 : 반복적인 기술과 경험이 쌓이면 기술이 발전합니다. - 리버싱 활용분야 1. 악성코드 분석 2. 버그 헌팅 3. 해킹 4. 해킹 방어대회 다음에는 방독면 책을 공부해보도록 하겠습..
shellcode란 기계어로 만들어진 크기가 작은 코드로 운영체제의 명령 쉘을 이용한 코드입니다. 코드 인젝션 기술은 PE파일의 빈 공간에 셸코드를 입력해서 실행하게 만드는 해킹기술로 코드 케이브 기술을 활용해서 만들 수 있습니다. 저는 여기서 코드 인젝션이 코드케이블기술과 같다고 생각하여 코드 인젝션 공격이 있고, 어떤 코드를 심느냐에따라 달라진다고 생각합니다. 코드 인젝션 개념은 아래와 같습니다. - 셸코드 예제 셸코드 예제는 아래 페이지에 들어가면 사용자(BroK3n)을 강제로 추가하는 기능을 가진 쉘코드가 있습니다. 아래 첨부하겠습니다. https://www.exploit-db.com/exploits/33836 Windows - Add Administrator User (BroK3n/BroK3n)..
rena 20강의 경우 언패킹을 하는 문제입니다. 즉, OEP를 찾는 문제이죠. hardware bp를 이용해 OEP를 찾아보겠습니다. - 문제 인식 먼저 실행시켜보도록 하겠습니다. 자신을 언패킹 해달라고합니다. 올리디버거로 열어봅시다. - reversing 한번 F8을 눌러 JMP해보겠습니다. PUSH EBP로 이제 unpacking 함수를 실행하려고하는 것 같습니다. 이 함수가 끝난다면 즉, EBP의 값이 POP된다면 이제 OEP로 JMP할 것임을 예상할 수 있습니다. 따라서 EBP값에 hardware bp를 걸어보겠습니다. 스택에서 follow in Dump를 해주고 메모리 부분에서 오른쪽마우스클릭 - BreakPoint - hardware 눌러주시고, 아래와 같이 설정해주고 OK를 눌러줍니다. 이..
이번시간에는 linux 프로세스의 메모리 구조에대해 간단하게 정리하겠습니다. - linux 프로세스 메모리 구조 - window memory layer
- 패킹 패킹이란 프로그램의 코드 크기를 줄이려고 압축하거나 프로그램 분석을 어렵게 만들려고 암호화하는 것을 패킹이라고합니다. 특히 단순 압축하는 것을 컴프레싱, 암호화하는 것을 프로텍팅이락 구분합니다. 패킹의 원리는 다음과 같습니다. 1. origin code를 알고리즘에 따라 패킹한 후 그 코드를 packed data로 프로그램에 unpackingc code와 함께 저장합니다. 2. origin code는 삭제합니다. 3. 엔트리 포인트를 unpacking code의 시작점으로 두면 패킹이 끝이납니다. 언패킹의 원리는 다음과 같습니다. 1. 엔트리 포인트에따라 unpacking code 알고리즘을 실행합니다. 2. unpacking code 알고리즘은 packed data를 기반으로 결과값을 orig..
안녕하세요. 시스템해킹을 드디어 하려고 마음먹고 먼저 리눅스 환경을 설정해주겠습니다. 저는 윈도우 10을 쓰기때문에 WSL2로 우분투를 설치하겠습니다. - WSL2 우분투 설치 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart wsl --set-default-version 2 파워쉘을 관리자권한으로 실행하여 위 명령어를 입력해줍니다. 이후 마이크로 스토어에서 ubuntu 18.04.5 LTS를 다운받아주었습니다. 관련해서 0x80070..
안녕하세요. 이번시간에는 리버싱 입문책으로따라 rena 17강을 크랙해보도록 하겠습니다. 리버싱 입문의 글쓴이는 이 17강을 통해서 어셈블리어를 익히는 것을 중점으로 설명합니다. 하지만 저는 어셈블리어와 친하기때문에 따로 일련번호 생성 로직을 읽어내는 부분은 정리하지않겠습니다. 그저 리버싱을 통해 크랙해보도록 하겠습니다. 하지만 어셈블리어와 친해지는 것은 중요하다는 것을 잊지않을 것 입니다. - 문제 인식 먼저 17강 파일을 실행시켜보도록 하겠습니다. 위에는 Nova, 아래는 1234를 넣어보고 check을 눌러보겠습니다. 디버거를 하드 드라이브에서 제거하라고 나오는 군요.. 하지만 이 문제는 일련번호에 관한 문제입니다. Nova를 가지고 일련번호를 프로그램 내부적으로 생성해내고 그것이 사용자가 입력한 ..
rena의 강의는 리버싱 관련해서 유명한 강의 입니다. 이에따른 자료들은 아래 링크에 들어가시면 다운 받으실 수 있습니다. https://forum.tuts4you.com/files/file/1307-lenas-reversing-for-newbies/ Lenas Reversing for Newbies A collection of tutorials aimed particularly for newbie reverse engineers. 01. Olly + assembler + patching a basic reverseme 02. Keyfiling the reverseme + assembler 03. Basic nag removal + header problems 04. Basic + aesthetic pa..
안녕하세요. 이번시간에는 crackme5.exe 파일을 리버싱해보고 크랙판을 만들어보도록 하겠습니다. 자료는 아래 올려놓겠습니다. - 문제 인식 먼저 파일을 실행시켜보도록 하겠습니다. 이것도 4번 문제와 같이 시리얼을 넣으라고 하는 군요, 하지만 이번 문제는 check 버튼이 활성화가 되어있습니다. 한번 1234를 넣어서 check 버튼을 눌러보겠습니다. 시리얼 번호가 다르다고 나오는 군요, 이번 문제는 시리얼 번호를 알아내는 문제인 것 같습니다. - 리버싱 ollydbg를 이용해 리버싱을 해주겠습니다. 그리고 함수가 있는지 확인하기위해 PUSH EBP를 검색해보겠습니다. 검색했지만 없는 것으로 확인됩니다. 이 프로그램은 무슨 언어로 쓰여졌을까요? DIE로 분석해보겠습니다. 분석 결과 delphi로 쓰여..