목록Windows (12)
cgy12306
하위 디렉토리 내를 재귀 돌면서 특정 소스코드의 라인 수를 계산해주는 배치 스크립트 6번째 라인에서 원하는 확장자를 추가나 삭제하면 됨 @echo off setlocal enabledelayedexpansion set /a linecnt=0 for /r %%i in (*.java *.html) do ( for /f "tokens=3 usebackq" %%a IN (`Find /V /C %%i ""`) do set /a res=%%a set /a linecnt+=!res! ) echo %linecnt%
Windows Internal 윈도우 운영체제에서 각 프로세스의 context는 access token을 갖고 있습니다. 이 Access toekn은 id값과 프로세스에 대한 자격을 갖고 있습니다. ntdll.dll : 커널모드로 전환하고, 시스템 서비스 디스패쳐를 호출하게 하는 아키텍쳐 별 지시사항을 담고 있는데 이 지시사항은 일부 파라미터를 검증한 후 ntoskrnl.exe 내부의 실제 코드를 포함하는 실제 커널 모드 시스템 서비스를 호출합니다. 커널은 ntoskrnl.exe의 기능 집합으로 구성 되어 있습니다. ntoskrnl.exe는 스레드, 스케줄링 및 동기화 서비스 등 low-level의 기능을 지원합니다. 또한 커널 코드는 주로 C로 작성되어 있습니다. 커널 오브젝트(EPROCESS)는 커널..
cr4 레지스터 : 프로세서에서 지원하는 각종 확장 기능을 제어하는 레지스터입니다. 페이지 크기 확장 또는 메모리 영역 확장 기능을 활성화 시킵니다. 이 cr4 레지스터의 20번째 bit는 SMEP에 해당합니다. SMEP(Supervisor Mode Execution Protection)은 ring 0(높은 권한)에서 ring 3(낮은 권한)의 코드 실행을 방지하기 위한 보호 기법입니다. 이 bit를 해제를 하게 되면 SMEP이 해제되어 virtualalloc으로 할당한 메모리에 쉘 코드를 삽입하고, rip를 조작하여 할당된 메모리를 가리켜 쉘 코드를 실행시키면 정상적으로 쉘 코드가 실행되는 것을 확인할 수 있습니다. cr4 &=0x6fffff; * intel i3, i5, i7에서 된다고는 하지만 현재..
Windbg에서 windbg를 설치합니다. VirtualKD redux에서 최신버전의 virtualkd redux를 설치합니다. 설치 후 windows 아키텍쳐에 맞는 폴더를 복사해서 VM windows에 넣어줍니다. vminstall을 실행시킵니다. 경고 메시지 창이 뜹니다. OK 버튼을 눌러줍니다. 재시작을 하겠냐고 물어보니다. Yes를 눌러줍니다. 여기서 켜지기 전에 host에서 vmmon을 실행시켜줍니다. guest os를 재부팅을 하게 되면 부트 매니저 화면이 뜨게 됩니다. 여기서 f8을 눌러서 Disable Signature Enforcement Manually를 선택해줍니다. Disable Driver Signature Enforcement(드라이버 서명 적용 안함)을 선택해줍니다. 화면이 ..
디바이스 드라이버 운영체제가 키보드, 마우스, 디스크, LAN카드 같은 디바이스 등과 상호작용할 수 있게 한 S/W입니다. 디바이스 드라이버는 드라이버 공급업체에 의해 작성되어 제공되고 있습니다.(서드파티) storahci라는 드라이버는 메모리에 디바이스 객체(Device Object)라는 자료구조를 만듭니다. 디바이스 객체는 디바이스 드라이버가 직접 생성하며, 디바이스에 관여하고 있다는 의미입니다. 필터 드라이버, 기능 드라이버, 버스 드라이버 세개를 생성하는데 이 세개를 묶어 디바이스 스택이라고 부릅니다. 가장 먼저 버스 드라이버가 디바이스를 발견하면 디바이스 객체를 생성하고, 이후 기능 드라이버, 필터 드라이버 순으로 생성하게 됩니다. 애플리케이션은 디바이스 드라이버에 접근을 시도하는데 이때 필터 ..
kb : 콜 스택 확인 g : 실행 p : step over t : step into pt : ret 명령어가 나오기 전까지 실행 u : 명령어 보기 ub : 이전 명령어 보기 a : 어셈블리어 모드로 들어감, 이후에 어셈블리어 입력 가능 $$>
Stack Cookies / GS protection '/GS switch'는 스택 기반 오버플로우 공격을 차단하기 위해 함수의 시작과 끝부분에 약간의 코드를 추가하는 컴파일 옵션이다. 애플리케이션이 시작되면, 전역 마스터 쿠키(부호 없는 정수 형식의 4byte)가 계산되고 로드된 모듈의 .data 섹션에 저장된다. 함수 시작 부분에, 전역 마스터 쿠키가 저장된 EBP와 EIP 바로 전 스택에 복사된다. buffer | cookie | ebp | eip 함수의 끝 부분에 쿠키는 다시 전역 마스터 쿠키 값과 비교해서 다르면 스택 오염이 발생된것으로 판단하여 프로그램은 비정상 종료 된다. 코드에 라인이 추가되는 것으로 인한 퍼포먼스 감소 영향을 최소화하기 위해, 컴파일러는 _alloca를 사용해 스택에 메모..
공격코드 제작을 위해 기본적으로 갖춰야 할 도구들 windbg / ollydbg / immunity debugger 메타스플로잇 pydbg perl, python과 같은 스크립팅 도구 1. Byakugan : pattern_offset and searchOpcode byakugan.dll과 injectsu.dll 파일을 windbg 폴더에 넣는다. 그리고 detoured.dll을 C:\windows\system32 폴더 안에 저장한다. byakugan.dll로 할 수 있는 작업은 아래와 같다 justsu : 메모리 내의 버퍼를 추적하는 툴 세트로, 충돌 발생 시 제어 가능한 항목과 유효한 리턴 주소를 찾아내는 도구 pattern offset mushishi : 안티 디버깅 탐지 및 안티 디버깅 우회 기법..