네트워크 보안
strongswan #2 starter -> charon launch, config update
StrongSwan starter는 Charon 프로세스를 실행하고 구성 파일을 읽어 IKE/IPsec 연결 메세지를 charon 데몬으로 전달하는 역할을 한다. starter: strongswan/src/starter/바이너리 위치: /usr/libexec/ipsec/startercharon: strongswan/src/charon/ Starter 실행 후 초기화 과정Usage: starter [--nofork] [--auto-update ] [--debug|--debug-more|--debug-all|--nolog] [--attach-gdb] [--daemon ] [--conf ] 1. library_init()starter..
Netlink Sockets # How to use
Netlink는 Linux에서 kernel space와 user space 간의 통신을 위해 설계된 특별한 IPC (Inter-Process Communication)입니다. Netlink를 사용하면 커널과 사용자 간 데이터를 주고받을 수 있으며, socket programming 방식을 사용하기 때문에 기존의 소켓 프로그래밍과 유사하게 사용할 수 있습니다. Netlink는 아래와 같은 특징과 장점이 있습니다. Netlink의 장점 구현이 간단함 Netlink는 kernel과 user space 사이의 통신을 구현할 때, 기존의 system calls, ioctl, proc file system 등을 사용하지 않고도 쉽게 구현할 수 있습니다. Netlink를 사용하면 추가하고자 하는 API와 protoc..
strongswan #1 IKEv2 소프트웨어 아키텍쳐, 메세지 포맷, config 설정 및 실행 방법
strongSwan은 IPsec(Internet Protocol Security) 기반 VPN 솔루션으로, 주로 IKE(Internet Key Exchange) 프로토콜을 통해 보안 연결을 설정하고 관리한다.핵심 구성요소는 charon이고 그 외 launcher 역할을 하는 starter, 라이브러리인 libcharon, libstrongswan이 있다.소스코드를 확인하면 아래와 같이 많은 모듈이 나온다. 하지만 크게 봐야할 부분은 다음과 같다.libstrongswan: strongSwan의 핵심 라이브러리(암호화, 키 교환, 인증 및 다양한 프로토콜을 지원)libcharon: IKE 데몬인 charon에서 사용하는 라이브러리( IKEv2 프로토콜 기반 VPN 커넥션 관리, 네트워크 키 교환 처리)plu..
pwnable flag
Papa brought me a packed present! let's open it. Download : http://pwnable.kr/bin/flagThis is reversing task. all you need is binary저 링크로 다운로드를 받으면 elf file을 얻을 수 있다.$ wget http://pwnable.kr/bin/flag$ file flagflag: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, no section header실행 권한을 주고 실행시키면 $ chmod +x flag$ ./flagI will malloc() and strcpy the flag there. take i..
pwnable bof
Nana told me that buffer overflow is one of the most common software vulnerability. Is that true? Download : http://pwnable.kr/bin/bofDownload : http://pwnable.kr/bin/bof.cRunning at : nc pwnable.kr 9000소스코드와 바이너리를 다운받아보자.#include #include #include void func(int key){ char overflowme[32]; printf("overflow me : "); gets(overflowme); // smash me! if(key == 0xcafebabe){ system("/bin/sh"); } else{..
[pwnable] pwnable.kr collision (hash function, hash collision, md5 hash collision)
ProblemDaddy told me about cool MD5 hash collision today. I wanna do something like that too! ssh col@pwnable.kr -p2222 (pw:guest)Hash Function해시 함수는 입력된 데이터를 고정된 길이의 출력 값(해시 값)으로 변환하는 함수해시 함수는 암호학에서 중요한 역할을 하며, 주로 데이터 무결성 검사나 디지털 서명 등에 사용됨MD5Message-Digest Algorithm 5의 약자로, 128비트 길이의 해시 값을 생성하는 해시 함수.MD5는 한때 많이 사용되었지만, 해시 충돌 문제로 인해 현재는 안전하지 않은 알고리즘으로 간주Hash Collision해시 충돌이란 서로 다른 입력값이 동일한 해시 값을..
[pwnable] pwnable.kr fd
ProblemMommy! what is a file descriptor in Linux? * try to play the wargame your self but if you are ABSOLUTE beginner, follow this tutorial link: https://youtu.be/971eZhMHQQwssh fd@pwnable.kr -p2222 (pw:guest)Exploration먼저 디렉토리를 탐색하면 flag는 fd_pwn 권한을 얻어야 읽을 수 있었다. fd 파일을 통해 fd_pwn 권한을 얻어 flag를 읽는 방향으로 접근하였다.fd@pwnable:~$ iduid=1002(fd) gid=1002(fd) groups=1002(fd)fd@pwnable:~$ ls -lahrtotal 40K..
TCP/IP Stack 개발 #1 Ethernet & ARP
TCP/IP stack을 개발하는 것은 어려운 작업일 수 있으나 핵심사양은 비교적 간결하다.중요한 부분은 TCP header 파싱, 상태 머신, 혼잡 제어, 재전송 시간 초과 계산이다. 가장 일반적인 Layer2와 Layer3 프로토콜인 Ethernet과 IP는 각각 TCP의 복잡성에 비하면 간단하다. TUN/TAP 장치리눅스 TAP 장치를 이용하여 리눅스 커널에서 저수준 네트워크 트래픽을 가로챌 수 있다. TUN/TAP 장치는 일반적으로 User Space application이 각각 L3/L2 트래픽을 조작하는데 사용된다. 인기있는 예로는 패킷을 다른 패킷의 페이로드 내부에 래핑하는 터널링이 있다. TUN/TAP 장치의 장점은 User Space 프로그램에서 설정이 쉽고 OpenVPN 과 같은 다..
[C/C++] epoll
Epollepoll은 select의 단점을 보완하여 사용할 수 있도록 만든 I/O 통지 모델이다. 파일 디스크립터를 사용자가 아닌 커널이 관리하며 그만큼 cpu 는 계속해서 파일 디스크립터의 상태 변화를 감시할 필요가 있다. 즉 select 처럼 어느 파일 디스크립터에 이벤트가 발생하였는지 찾기 위해 전체 파일디스크립터에 대해서 순차 검색을 위한 FD_ISSET 루프를 돌려야 하지만 Epoll의 경우 이벤트가 발생한 파일 디스크립터들만 구조체 배열을 통해 넘겨주므로 메모리 카피에 대한 비용이 줄어든다. Epoll의 주요기능- non block I/O 지: epoll은 non block 모드로 파일 디스크립터를 처리할 수 있다.- 높은 성능: 파일 디스크립터 집합을 다룰 때 매우 효율적이다.- Edge T..