전체 글 122

Linux 에서 Dell workstation의 쿨링팬 속도조절을 자동화 해보기

얼마전에 퍼징머신을 하나 장만하려고 Dell 중고서버를 구매했습니다. 조금 오래된 cpu가 장착되어있긴 하지만 커널 퍼징은 vcpu가 많을수록 더 많은 vm을 돌릴수 있기 때문에 개별 코어의 성능이 조금 부족해도 별 상관 없습니다. 원래는 윈도우가 설치된 메인 컴퓨터에 리눅스 VM을 하나 띄워놓고 퍼징을 했었기 때문에 항상 아쉬운 마음이 들었었는데, 새로 사온 중고서버는 vcpu가 80개나 되기 때문에 vm 하나당 2개의 vcpu를 할당해도 최대 40개의 vm으로 퍼징을 돌릴수 있게되서 정말 만족스럽습니다. 하지만 한가지 아쉬운것이 있는데, Dell 자체 bios에서는 쿨링팬 속도를 세밀하게 조정할수 없다는것 입니다. 저의 메인 컴퓨터에서는 msi 메인보드를 사용하고 있어서 bios에서 이런..

CVE-2023-21768 : Windows Local Privilege Escalation 분석 공부

개요 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-21768 CVE - CVE-2023-21768 20221213 Disclaimer: The record creation date may reflect when the CVE ID was allocated or reserved, and does not necessarily indicate when this vulnerability was discovered, shared with the affected vendor, publicly disclosed, or updated in CVE. cve.mitre.org 처음 해보는 원데이 취약점 분석입니다. 보통 윈도우 관련된 심각한 취약점들은 옛날 버전의 운..

리눅스 커널 익스플로잇 공부를 위한 커널 프로그래밍 공부 (2)

Character Device Driver: 버퍼 캐시를 사용하지 않고 데이터를 한번에 하나의 문자를 읽고 쓰는 드라이버 Block Device Driver : 버퍼 캐시를 통한 임의 접근과 블록 단위 입출력이 가능한 드라이버 Network Device Driver : 네트워크 스택과 네트워크 하드웨어 사이에 위치해 데이터의 송수신을 담당하는 드라이버 file_operations 구조체는 Charactor Device, Block Device 드라이버와 일반 프로그램 간의 통신을 위해 제공되는 인터페이스 입니다. read,write,open 등의 함 포인터들을 사용할수 있다는 특징을 가지고 있고 Network Device 드라이버는 위의 구조체를 사용하지 않는 대신, include/linux/netdev..

리눅스 커널 익스플로잇 공부를 위한 커널 프로그래밍 공부 (1)

커널 익스플로잇을 공부하기 전에 먼저 커널 모듈을 개발하는 방법을 공부하면서 리눅스 커널에 대해서 점차 알아갈것입니다. 먼저 저는 공부 자료에 나와있는 환경과 같은 ubuntu 18 버전으로 구축했습니다. 먼저 위와 같이 필요한 패키지를 설치해야 합니다. 이제 임시 폴더를 만든뒤 이 폴더에 간단한 커널 모듈을 작성해봅니다. 이 코드는 간단한 헬로월드 예제라고 합니다. init_module() 함수에는 모듈이 커널에 삽입될때 동작해야하는 코드가 포함되고 cleanup_module() 함수는 모듈이 커널에서 제거될때 동작해야하는 코드가 포함된다고 합니다. 커널 모듈에서 출력을 할때는 printk() 함수가 주로 사용되는거 같습니다. 그리고 이 코드를 커널에서 동작하게 할려면 Makefile을 작성해야합니다...

[DEF CON CTF Qualifier 2023] Live CTF : Test Your Luck

64비트 기반이고 실행파일의 보호기법은 PIE와 ssp가 걸려있습니다. 특이한점은 메모리 내에 rwx 권한이 있다는것입니다. 이 권한이 있는것을 보니 쉘코드를 활용하는 문제인것으로 유추할수 있을것같은데 한번 실행시켜보면 처음에 알수없는값이 출력되고 값을 입력해보면 세그폴트가 나타납니다. 도데체 무슨 프로그램인지 알아내기위해 IDA로 분석해보면 main함수는 다음과 같습니다. 처음에는 입력을 받은뒤 입력값이 전역변수값과 같으면 Correct! 라는 메세지를 출력하고 아니면 Incorrect 라는 메세지를 출력하는데 사용되는 전역변수의 값이 어디서 초기화되는지 살펴보면 위와 같이 랜덤값을 뽑아서 다른 변수들과 연산을 거친값의 결과입니다. 그러므로 당장 랜덤함수를 뚫을만한 방법은 보이지 않습니다. 그런데 아무..

CTF 2023.06.02

[DEF CON CTF Qualifier 2023] Live CTF : What a maze meant

주말에 BoB 자소서를 쓰다가 선배님이 데프콘 예선을 뛰고 있다고 연락이 왔습니다. 그래서 부럽다는 생각을 하고있었는데, 선배님이 데프콘 예선은 누구나 참가할수있다고 하셔서 저는 우선 데프콘 예선 문제들은 어느정도 수준일지 궁금하기도 하고 곧있으면 국내 메이저 CTF가 시작하기도 해서, 저의 버킷리스트중 하나인 데프콘 본선 진출해보기를 이루기 위한 경험을 쌓기 위해서 한번 참가해봤습니다. 문제들을 둘러보니 역시나 데프콘 답게 예선인데도 불구하고 문제들 수준이 왠만한 메이저 대회 본선급으로 난이도가 미쳐 날뛰고 있었습니다. 데프콘을 처음 경험해봐서 문제 시스템도 생소하기도 해서 뭐라도 푸는것이 불가능한가 싶었는데 데프콘 예선에서 Live CTF를 연습할수 있는 문제들이 나온다는것을 보고 예전부터 한번 풀어..

CTF 2023.05.31

2023 TAMUctf write-up

PWN 1. inspector-gadget 이 문제를 분석해보면 나오는 취약점은 pwnme 함수에 있습니다. read 함수에서 buf크기 이상의 값을 버퍼에 입력받기 때문에 BOF가 발생합니다. 프로그램에는 NX보호기법이 적용되어 있으므로 ROP를 시도해볼수 있습니다. 이 프로그램을 익스플로잇 하기위해서는 원가젯을 사용하거나 system함수를 사용해야하므로 먼저 libc base 를 leak하고나서 pwnme 함수로 다시 리턴한뒤 이 값을 기반으로 system함수를 호출해서 쉘을 따는 방식으로 익스플로잇 했습니다. 주의해야할건, system 함수를 사용해서 쉘을 따므로 rsp 16바이트로 정렬되어있어야 하는데 제가 작성했던 이전 페이로드는 16바이트로 정렬이 되지 않아서 익스플로잇에 실패했었습니다. 그러..

CTF 2023.05.15
728x90