BEST
보안 · 네트워크

/

보안

리눅스 커널 해킹. A부터 Z까지

리눅스 커널의 각종 보호 기법과 그에 대한 우회 방안, 다양한 취약점들을 분석해보는 강의이며 강의별로 실습 예제가 제공 됩니다.

(4.8) 수강평 21개

수강생 563명

Thumbnail

이런 걸
배워요!

  • 리눅스 커널 해킹

  • CTF 커널 문제 풀이

  • linux kernel exploit

💡  강의 특징 

이 강의는 리눅스 커널 해킹에 대한 전반적인 지식을 학습하는 강의입니다.

리눅스 커널 해킹은 국내에서 공부할 수 있는 자료가 매우 부족한 분야이며, 환경 구성 단계부터 수많은 애로 사항이 있는 분야입니다. 하지만, 이 강의를 수강하시면 환경 구성은 물론이고 다양한 보호 기법의 우회 방법각종 취약점에 대해 쉽게 공부하실 수 있습니다.

또, 단순히 특정 툴 사용법만을 가르치거나 이미 잘 알려진 해킹 기술들을 다시 소개하는 수준에 불과한 여타 정보보안 강의들과 달리, low-level에서의 동작 원리에 입각하여 각종 익스플로잇 테크닉들을 소개한다는 것이 이 강의의 특징입니다.

▲ 리눅스 커널의 취약점을 이용해 권한 상승을 일으킨 모습

최근 몇 년간 major 한 CTF에서는 리눅스 커널 문제가 꾸준히 출제됐습니다. 최근의 경우 출제 빈도가 더욱 증가하는 추세고요. 이 강의를 "완벽히" 이해하신다면, CTF에서 출제되는 리눅스 커널 문제들은 대부분 해결하실 수 있을 것이며, 리얼 월드에서 취약점을 찾는 데도 큰 도움을 받으실 수 있을 거라 말씀드리고 싶습니다.

마지막으로 이 강의의 가장 큰 특징은, 강의마다 강사가 직접 제작한 실습 예제 파일을 제공해 준다는 점입니다. 이러한 실습 예제 파일을 통해 수강생 여러분들이 직접 강의를 따라 해 보고, 디버깅을 해보실 수 있습니다.


📖  각 섹션에서는 무엇을 배우나요? 

 

▲ 섹션 4.6. userfaultfd 활용 기법 강의 자료

이 강의는 대부분 위의 예시와 같이 키노트를 이용한 발표로 구성되어 있습니다.

 

  • 섹션 0. 강의 프롤로그

본격적으로 강의를 시작하기에 앞서, 강사에 대한 간단한 소개와 강의 계획을 설명해 드리는 섹션입니다.

 

  • 섹션 1. 리눅스 커널 해킹 배경지식

리눅스 커널을 해킹하기 위한 기본적인 배경지식을 공부하는 섹션입니다.

 

  • 섹션 2. 리눅스 커널 분석 환경 세팅

리눅스 커널을 디버깅할 수 있는 환경을 구성하는 방법을 알아보는 섹션입니다. 리얼 월드를 위한 환경 세팅 과정에서는 리눅스 커널과 파일 시스템을 직접 빌드해볼 것이며, CTF를 위한 환경 세팅 과정에서는 문제를 풀기 위한 준비 과정을 알아볼 예정입니다.

 

  • 섹션 3. 리눅스 커널의 보호 기법 및 우회 방안

리눅스 커널의 다양한 보호 기법에 대해 알아보고, 각 보호 기법들을 우회할 수 있는 테크닉들을 실습을 통해 공부해보는 섹션입니다. 공부해볼 보호 기법들은 인텔 계열 아키텍쳐의 보호 기법들이며, 총 6가지의 보호 기법을 공부해 볼 예정입니다. 또, 이번 섹션부터는 각 강의마다 실습 예제 파일이 제공됩니다.

 

  • 섹션 4. 다양한 커널 공격 테크닉 실습

리눅스 커널 취약점이 터지는 상황에서 권한 상승을 일으킬 수 있는 다양한 테크닉들을 공부해보는 섹션입니다.

 

  • 섹션 5. 다양한 리눅스 커널 취약점 분석

리눅스 커널에서 발생할 수 있는 다양한 유형의 취약점을 알아보는 섹션입니다.

 

  • 섹션 6. 대회 문제 실습 - Input Test Driver

실제로 CTF에 출제된 리눅스 커널 문제를 풀어보는 섹션입니다. 풀어볼 문제는, 강사가 소속된 팀에서 운영했던 대회인 2020 Defenit CTF에서 출제된 Input Test Driver 문제입니다.

 

  • 섹션 7. 강의 에필로그

리눅스 커널을 공부할 때 도움이 되는 레퍼런스를 소개한 뒤, 강의를 마무리하는 섹션입니다.


✏️  강의를 듣기 위한 배경지식

 

  • 최소 배경지식

1. C 언어

 

  • 권장 배경지식

1. 시스템 해킹 관련 지식 (BOF, ROP, UAF 등)
2. 어셈블리 언어 (x86_64)


🙋🏻‍♂️ 예상 질문 Q&A

 

Q. 저는 시스템 해킹을 해본 적도 없고 어셈블리 언어도 모르는데 강의를 들어도 될까요?
A. 각 강의를 제작할 때, 시스템 해킹이 주 분야가 아니신 분들도 들을 수 있도록 제작했기 때문에, 새로운 용어가 등장할 때마다 강의에 그에 대한 설명이 들어가 있습니다.

하지만, 이는 요약된 설명이기 때문에 모르는 개념이 등장했을 때 구글 검색과 병행해서 공부하셔야 하며, 시스템 해킹 관련 지식이 없는 상태에서 수강하실 경우 학습 기간이 훨씬 길어진다는 점을 염두에 두셔야 합니다.

 

 

Q. 리눅스는 어떤 버전을 사용하시나요?
A. 제 경우 우분투 18.04 버전을 사용했습니다.(https://releases.ubuntu.com/18.04/)

 

 

Q. 강의가 연재식 강의던데, 남은 강의는 언제 올라오나요?
A. 현재 모든 강의의 업로드가 완료되었습니다.

 

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 리눅스 커널 해킹을 처음 공부해보고 싶은 분들

  • 포너블을 공부해 보았고, 이제 리눅스 커널 익스플로잇에 입문하고 싶으신 분들

선수 지식,
필요할까요?

  • C언어

리눅스 커널 해커 및 컨트리뷰터로 활동 중인 김현우(V4bel)입니다.

 ⦁  Contact: imv4bel@gmail.com

 

Awards

⦁  Google kernelCTF LTS-6.6.56/COS-109 0-day WIN (TBA, exp196/exp197)
⦁  Google kernelCTF LTS-6.6.35 0-day WIN (CVE-2024-41010, exp183)

 

Vulnerability Reports

⦁  CVE-2024-27394 (Linux kernel TCP Use-After-Free)
⦁  CVE-2024-27395 (Linux kernel openvswitch Use-After-Free)
⦁  CVE-2024-27396 (Linux kernel GTP Use-After-Free)
⦁  CVE-2023-51779 (Linux kernel bluetooth socket Use-After-Free)
⦁  CVE-2023-51780 (Linux kernel atm socket Use-After-Free)
⦁  CVE-2023-51781 (Linux kernel appletalk socket Use-After-Free)
⦁  CVE-2023-51782 (Linux kernel rose socket Use-After-Free)
⦁  CVE-2023-32269 (Linux kernel NET/ROM socket Use-After-Free)
⦁  CVE-2022-41218 (Linux kernel DVB core Use-After-Free)
⦁  CVE-2022-45884 (Linux kernel DVB core Use-After-Free)
⦁  CVE-2022-45885 (Linux kernel DVB core Use-After-Free)
⦁  CVE-2022-45886 (Linux kernel DVB core Use-After-Free)
⦁  CVE-2022-45919 (Linux kernel DVB core Use-After-Free)
  CVE-2022-40307 (Linux kernel Device driver Use-After-Free)
 CVE-2022-41848 (Linux kernel Device driver Use-After-Free)
 CVE-2022-41849 (Linux kernel Device driver Use-After-Free)
⦁  CVE-2022-41850 (Linux kernel Device driver Use-After-Free)
  CVE-2022-44032 (Linux kernel Device driver Use-After-Free)
  CVE-2022-44033 (Linux kernel Device driver Use-After-Free)
  CVE-2022-44034 (Linux kernel Device driver Use-After-Free)
  CVE-2022-45888 (Linux kernel Device driver Use-After-Free)

 

Linux kernel Contributions

⦁  tcp: Fix Use-After-Free in tcp_ao_connect_init
(github.com/torvalds/linux/commit/80e679b352c3ce5158f3f778cfb77eb767e586fb)
⦁  net: openvswitch: Fix Use-After-Free in ovs_ct_exit
(github.com/torvalds/linux/commit/5ea7b72d4fac2fdbc0425cd8f2ea33abe95235b2)
⦁  net: gtp: Fix Use-After-Free in gtp_dellink
(github.com/torvalds/linux/commit/f2a904107ee2b647bb7794a1a82b67740d7c8a64)
⦁  Bluetooth: af_bluetooth: Fix Use-After-Free in bt_sock_recvmsg
(github.com/torvalds/linux/commit/2e07e8348ea454615e268222ae3fc240421be768)
⦁  atm: Fix Use-After-Free in do_vcc_ioctl
(github.com/torvalds/linux/commit/24e90b9e34f9e039f56b5f25f6e6eb92cdd8f4b3)
⦁  appletalk: Fix Use-After-Free in atalk_ioctl
(github.com/torvalds/linux/commit/189ff16722ee36ced4d2a2469d4ab65a8fee4198)
⦁  net/rose: Fix Use-After-Free in rose_ioctl
(github.com/torvalds/linux/commit/810c38a369a0a0ce625b5c12169abce1dd9ccd53)
⦁  media: dvb-core: Fix use-after-free due to race at dvb_register_device()
(github.com/torvalds/linux/commit/627bb528b086b4136315c25d6a447a98ea9448d3)
⦁  af_key: Fix heap information leak
(github.com/torvalds/linux/commit/2f4796518315ab246638db8feebfcb494212e7ee)
⦁  netrom: Fix use-after-free caused by accept on already connected socket
(github.com/torvalds/linux/commit/611792920925fb088ddccbe2783c7f92fdfb6b64)
⦁  net/rose: Fix to not accept on connected socket
(github.com/torvalds/linux/commit/14caefcf9837a2be765a566005ad82cd0d2a429f)
⦁  net/x25: Fix to not accept on connected socket
(github.com/torvalds/linux/commit/f2b0b5210f67c56a3bcdf92ff665fb285d6e0067)
⦁  efi: capsule-loader: Fix use-after-free in efi_capsule_write
(github.com/torvalds/linux/commit/9cb636b5f6a8cc6d1b50809ec8f8d33ae0c84c95)
⦁  HID: roccat: Fix Use-After-Free in roccat_read
(github.com/torvalds/linux/commit/cacdb14b1c8d3804a3a7d31773bc7569837b71a4)
⦁  video: fbdev: smscufx: Fix use-after-free in ufx_ops_open()
(github.com/torvalds/linux/commit/5610bcfe8693c02e2e4c8b31427f1bdbdecc839c)
⦁  video: fbdev: smscufx: Fix several use-after-free bugs
(github.com/torvalds/linux/commit/cc67482c9e5f2c80d62f623bcc347c29f9f648e1)
⦁  char: xillybus: Fix trivial bug with mutex
(github.com/torvalds/linux/commit/c002f04c0bc79ec00d4beb75fb631d5bf37419bd)
⦁  bpf: Always use maximal size for copy_array()
(github.com/torvalds/linux/commit/45435d8da71f9f3e6860e6e6ea9667b6ec17ec64)
⦁  media: dvb-core: Fix UAF due to refcount races at releasing
(github.com/torvalds/linux/commit/fd3d91ab1c6ab0628fe642dd570b56302c30a792)

커리큘럼

전체

33개 ∙ (5시간 31분)

수업 자료

가 제공되는 강의입니다.

  • 리눅스 커널 개론

    09:29

강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!