목록전체 글 (126)
SH1R0_HACKER
localhost login : root password : hackerschoolbof vi /etc/passwd :%s/bash/bash2 :wq
포트 스캔 (Port Scan) 운영 중인 서버에서 열려 있는 TCP/UDP 포트를 검색하는 것을 의미합니다. 포트 스캔을 통해 특정 시스템이나 네트워크가 어떤 포트를 열어두고 서비스를 하는지 알아낼 수 있습니다. 잘 알려진 포트에는 20(FTP - 데이터 포트), 21(FTP - 제어 포트), 22(SSH), 53(DNS), 80(HTTP), 443(HTTPS) 등이 있습니다. 포트 스캐닝을 할 수 있는 방법은 다음과 같습니다. 1. TCP Connect Scan (TCP Open Scan) TCP/IP 소켓 프로그래밍의 connect() 함수를 사용하여 모든 포트에 대해 스캔하는 방식입니다. 해당 포트가 listen 상태라면 3 way hand shake를 합니다. 직접 연결을 하기 때문에 시스템 로..
[ 3-way handshake ] TCP 통신을 이용해서 데이터를 전송하려면 네트워크 연결을 설정하는 과정이 필요합니다. 1. 클라이언트가 서버로 접속 요청 메시지(SYN)을 전송합니다. 포트 상태 : 클라이언트(CLOSED) , 서버(LISTEN) 2. 접속 요청(SYN)을 받은 서버가 클라이언트의 요청을 정상적으로 받았다는 대답(ACK)과 클라이언트의 포트를 개방해 달라는 요청(SYN)을 전송합니다. (SYN+ACK) 포트 상태 : 클라이언트(SYN SENT), 서버(SYN RECEIVED) 3. 클라이언트는 서버가 보낸 SYN+ACK 를 받고 상태를 ESTABLISHED 로 변경한 후 포트를 개방해달라는 요청을 수락하는 ACK를 서버로 보냅니다. 포트 상태 : 클라이언트(ESTABLISHED), ..
보호되어 있는 글입니다.
참고 논문 A Ten Step Process for Forensic Readiness (Robert Rowlingson Ph.D) 금융회사 침해사고 준비도에 관한 연구 (김대은, 김용현) 개인정보보호 강화를 위한 포렌식 준비도 모델 및 도입방안 연구 (백승조, 임종인) Tan은 아래 두 가지 목표를 다루기 위해 포렌식 준비도의 개념을 도입했습니다. Maximising an environment's ability to collect credible digital evidence; Minimising the cost of forensics during an incident response. 포렌식 준비도는 신뢰할 수 있는 증거 수집 환경의 능력을 최대화하고, 사고 대응 비용을 최소화 합니다. 위 논문에서는 ..
전자증거개시제도(Electronic Discovery)는 증거개시제도(Discovery)에서 발전된 개념으로, 디지털형태로 저장된 증거를 모든 소송자가 재판전에 법원의 개입 없이 해당 증거물을 검토할 수 있도록 하여 시간과 비용을 단축할 수 있는 제도입니다. 미국에서 가장 많이 사용하고 있는 제도이기도 합니다. 아래의 표는 edrm.net 에서 제공하는 전자증거개시의 참조 모델입니다. ▲ EDRM (Electronic Discovery Reference Model) - 전자증거개시참조모델 1단계 : Information Governance (정보관리) 2단계 : Identify (식별) 3단계 : Preserve / Collect (보존 / 수집) 4단계 : Process / Review / Analyz..
[ Type Confusion ] Type Confusion은 프로그램에서 사용하는 변수나 객체를 선언 혹은 초기화되었을 때와 다른 타입으로 사용할 때 발생하는 취약점입니다. 위 코드는 C언어에서 정수를 입력받아 출력하는 예제입니다. puts 함수의 원형은 아래와 같습니다. int puts(const char *s) 정수로 값을 입력받지만 puts 함수는 char* 형 포인터를 인자로 받기 때문에 Type Confusion이 발생해 메모리에 존재하지 않는 주소를 입력한다면 다음과 같이 프로그램이 비정상 종료됩니다. 비주얼 스튜디오에서는 컴파일을 시도하면 오류가 발생합니다. [ Type Casting ] 형 변환은 변수 혹은 객체의 형태를 기존과 다른 형태로 바꾸는 것을 말합니다. 필요에 따라서 변경되는 ..
[ UAF(Use-After-Free) in C++ ] C++ 언어에서도 UAF 취약점이 발생할 수 있습니다. UAF 취약점은 Heap 영역에서 할당된 메모리를 해제(Free)하고 다시사용(re-use)할 때 발생하는 취약점입니다. 4행에서 구조체 S를 정의하고 f() 함수를 호출합니다. main 함수에서 객체 s를 동적 할당하고 11행에서 해제합니다. 13행에서 해제된 s를 참고하여 f 함수를 호출하려고 시도합니다. 이러한 형태는 가장 기본적인 UAF 취약점 입니다. 공격자가 해제된 객체 s의 메모리에 원하는 값을 쓰게 된다면 치명적일 수 있습니다. 아래의 코드는 UAF가 발생하는 또 다른 예제입니다. str_func 함수에서 리턴받은 "aaaa" 문자열을 char형으로 str 변수에 저장하고, dis..
보호되어 있는 글입니다.
C++에서도 C와 마찬가지로 변수를 사용할 때 초기화하지 않으면 쓰레기값이 출력되기 때문에 취약점으로 이어질 수 있습니다. 비주얼 스튜디오에서 컴파일을 시도하면 오류 메시지가 출력됩니다. C++에서 초기화되지 않은 변수로 인한 문제가 가장 많이 발생하는 부분은 생성자입니다. 위 예제에서 클래스 S는 함수 f에서 인자로 전달된 i와 c를 더한 후 그 값을 리턴합니다. 생성자가 없기 때문에 디폴트 생성자가 생성되고 멤버 변수를 별도로 초기화 하지 않습니다. 따라서 멤버변수 c에는 스택 메모리에 있는 잔여값이 저장되고, s.f(10)이 호출될 때 참조됩니다. 이 결과로 인해 메모리 유출로 이어집니다. 다음 예제입니다. S의 생성자는 mem_size가 인자로 전달되면 그 값만큼 메모리를 할당합니다. 하지만 me..