전체 글(440)
-
개인공부 _ 커널 조작에 관한 기본 개념
루트킷은 유저모드(user mode)와 커널모드(kernel mode) 요소를 모두 쉽게 포함할 수 있다. 유저모드에서는 네트워킹, 원격제어와 같은 대부분의 기능을 담당하고, 커널모드에서는 은닉기능과 하드웨어 접근에 관련된 기능을 담당한다. 루트킷의 구조는 책을 참조하였다. [ A rootkit that contains both user mode and kernel mode elements ] 유저 모드 프로그램은 커널 레벨 드라이버와 다양한 방법으로 서로 통신할 수 있다. 그 중에서 가장 일반적인 방법이 I/O Control(IOCTL) 명령을 이용하는 것이다. IOCTL 명령은 유저 애플리케이션과 커널 드라이버간의 통신을 위해서 프로그래머가 정의 하는 명령이다. 유저모드와 커널모드 요소를 모두 포함하..
2017.12.13 -
개인공부
운영체제에는 2가지의 모드가 있다. 1. 사용자모드2. 커널모드 그리고 모드 비트(mode bit)라는 것이 있는데 이 비트 값에 따라 현재 운영체제의 모드를 알 수가 있다. 커널 모드일 경우는 0사용자 모드일 경우는 1이다. 이 모드 비트(mode bit)로 인해 운영체제를 위하여 실행되는 작업과 사용자를 위해 실행되는 작업을 구분할 수 있는 것이다. 운영체제는 트랩(trap)이라는게 존재한다.CPU 자기 스스로 인터럽트를 거는 행동이다. 이 행동의 예시로는 유효하지 않은 메모리에 접근(REVERSING.KR 풀 때 인라인 어셈 작성 시 올바르지 않은 주소를 참조했었던 경험이 있다), 0으로 나누기(divide by zero)등이 있다. 이러한 행동을 하면 CPU는 자기 자신을 인터럽트 시킨다. 그리고..
2017.12.11 -
Social Engineering에 대한 생각..
새벽에 공부하다가 잠시 휴식하면서 사회공학에 대해 생각해 보는 시간을 가졌다. 요즘 많은 악성코드들은 "사회공학"이라는 키워드와 함께 공존하고 있다. 사회공학은 기술적인 방법이 아니라 "상대방의 신뢰를 악용해 개인이나 집단을 기만하고 정보를 획득하는 방법을 말한다"사람들을 설득해 특정 행동을 취하게 하거나, 비밀 정보를 누설하게 만드는데 주로 이용되고 있다. 범죄자나 보안 전문가는 대게 사회공학을 잘 이용하는 사람에 속한다고 한다. 스팸메일이나 자극적인 제목으로 메일을 작성하여 클릭하게 만드는 것도 사회공학이다. 이러한 시나리오도 충분히 가능하다고 본다. 메일 뿐만 아니라 USB에 악성파일을 삽입해두고, 그 파일의 제목을사람들이 클릭하게끔 적어두는 것이다. 가령 여자친구사진 이라던가 연봉정보 라던가.. ..
2017.12.08 -
강의 준비
트로이목마 : 복제 없이, 일반 어플리케이션 처럼 동작 하지만, 감염 되면 백도어를 이용하여 정보 탈취 논리폭탄 : logic bomb 특별한 이벤트가 발생할 때 까지 기다렸다가 동작하는 코드(ex 3.20 DDOS) 루트킷 : 루트의 권한을 획득 (본래는 개발자가 테스트 용도로 많이 사용하거나개발자가 프로그램에 장난을 칠 때 사용) 트랩도어프로그래머가 시스템에 접근할 목적으로 고의로 삽입해두는 코드인데 반드시 프로그래머는 테스트가 끝나고 배포될 때 제거를 해야한다 매크로자동화 스크립트 (주로 스프레드시트, 워드프로세서) 스파이웨어인터넷에서 몰래 설치되는 소프트웨어 키로그, 인터넷 사용이력, 하드디스크 파일, 레지스트리 정보 탈취 가능 일부는 암호나 금융정보도 탈취 메타모픽 바이러스안티바이러스 소프트웨어..
2017.12.08 -
ASLR 적용 된 바이너리 ASLR 해제하기 2~
이번문제는 1편에서 이어지게 됩니다. 궁금증이 하나 생기지 않나요? 음.. 저는 이런 궁금증이 생깁니다. 1. ASLR이 랜덤한 주소가 되게 하는 기법인데 그 주소를 고정 시켰어. 왜 고정 시킨건데? 2. 고정 안시키면 왜 안되? 내가 그냥 스택보면서 놀면 되는거 아냐? 이것에 대한 궁금증을 풀기 위해 ASLR이 적용 된 그 바이너리로 놀아보도록 하겠습니다. 다시 소스코드를 한번 살펴보죠.일단 포너블을 위한 소스코드니까요 ㅎ.ㅎ #define _CRT_SECURE_NO_WARNINGS#include #include #include #include int main(int argc, char*argv[]){char arr[10];int i = 0; printf("ASLR Test\n");printf("목표 ..
2017.12.06 -
ASLR 적용 된 바이너리 ASLR 해제하기~
오늘 진행해 볼 삽질은 ASLR이 적용된 윈도우즈 프로그램을 해제하는 방법에 대해 설명해볼까합니다. ASLR(Address SpaceLayout Randomization) Windows XP 이상부터 적용되는 기법입니다.프로그램이 로드 되는 상대주소를 랜덤으로 바꾸어서 pwn하기에 어렵게 하는 기법이라고 합니다. 작업한 환경은 Visual Studio Community 2017 버전입니다. 알고 계시면 좋은 것이 있는데 Visual Studio Community 2017버전은 기본적으로 빌드를 진행 하게 되면 임의주소로 컴파일이 되게 설정이 되어 있습니다. 그림을 보죠. "임의 기준 주소"에 예가 되어있는 것이 ASLR 입니다. 그렇다면 지금은 ASLR로 프로그램을 빌드 해야하기 때문에 그대로 설정 값을..
2017.12.06