Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/satheesh575555/linux-4.1.15_cve-2023-28772
Embedded Systems SecurityVulnerability AnalysisExploitationBinary AnalysisLearning & Education
GitHubsatheesh575555/linux-4.1.15_cve-2023-28772

linux-4.1.15_CVE-2023-28772

Linux 커널 취약점 CVE-2023-28772를 분석하고 시연하며, 보안 연구 및 교육 목적으로 패치된 또는 취약한 커널 소스를 제공합니다.

저장소 보기

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
193년 전아직 검토되지 않음

Linux 커널 릴리즈 4.x http://kernel.org/

다음은 Linux 버전 4의 릴리즈 노트입니다. 이 노트를 주의 깊게 읽으십시오. 이 노트는 이 버전이 무엇인지, 커널을 설치하는 방법과 문제가 발생했을 때 어떻게 해야 하는지를 설명합니다.

리눅스란 무엇인가?

Linux는 Unix 운영 체제의 클론으로, 네트워크를 통해 느슨하게 연결된 해커 팀의 도움을 받아 Linus Torvalds가 처음부터 작성했습니다. POSIX 및 Single UNIX Specification 준수를 목표로 합니다.

현대의 완전한 Unix에서 기대할 수 있는 모든 기능을 갖추고 있으며, 진정한 멀티태스킹, 가상 메모리, 공유 라이브러리, 요구 로딩(demand loading), 공유 copy-on-write 실행 파일, 적절한 메모리 관리, IPv4 및 IPv6를 포함한 멀티스택 네트워킹을 포함합니다.

GNU 일반 공중 사용 허가서(GNU General Public License)로 배포됩니다. 자세한 내용은 동봉된 COPYING 파일을 참조하십시오.

어떤 하드웨어에서 실행되나요?

원래는 32비트 x86 기반 PC(386 이상)를 위해 처음 개발되었지만, 오늘날 Linux는 (최소한) Compaq Alpha AXP, Sun SPARC 및 UltraSPARC, Motorola 68000, PowerPC, PowerPC64, ARM, Hitachi SuperH, Cell, IBM S/390, MIPS, HP PA-RISC, Intel IA-64, DEC VAX, AMD x86-64, AXIS CRIS, Xtensa, Tilera TILE, AVR32 및 Renesas M32R 아키텍처에서도 실행됩니다.

Linux는 페이지 메모리 관리 장치(PMMU)와 GNU C 컴파일러(gcc, GNU 컴파일러 모음(GCC)의 일부)의 포트가 있는 한 대부분의 범용 32비트 또는 64비트 아키텍처로 쉽게 포팅할 수 있습니다. Linux는 PMMU가 없는 여러 아키텍처에도 포팅되었지만, 그 경우 기능이 분명히 다소 제한적입니다. Linux는 그 자체로도 포팅되었습니다. 이제 커널을 사용자 공간 애플리케이션으로 실행할 수 있습니다. 이를 UserMode Linux(UML)라고 합니다.

문서:

  • 인터넷의 전자 형태와 서적 모두에서 Linux 관련 및 일반 UNIX 질문에 관한 많은 문서를 이용할 수 있습니다. LDP(Linux Documentation Project) 서적을 위해 Linux FTP 사이트의 문서 하위 디렉토리를 살펴볼 것을 권장합니다. 이 README는 시스템에 대한 문서를 의미하지 않습니다. 더 나은 소스가 많이 있습니다.

  • Documentation/ 하위 디렉토리에는 다양한 README 파일이 있습니다. 이러한 파일에는 일반적으로 일부 드라이버에 대한 커널별 설치 노트가 포함되어 있습니다. 각 파일에 포함된 내용 목록은 Documentation/00-INDEX를 참조하십시오. Changes 파일을 읽으십시오. 이 파일에는 커널 업그레이드로 인해 발생할 수 있는 문제에 대한 정보가 포함되어 있습니다.

  • Documentation/DocBook/ 하위 디렉토리에는 커널 개발자와 사용자를 위한 여러 가이드가 있습니다. 이 가이드는 PostScript(.ps), PDF, HTML 및 man-pages 등 여러 형식으로 렌더링할 수 있습니다. 설치 후 "make psdocs", "make pdfdocs", "make htmldocs" 또는 "make mandocs"를 실행하면 요청한 형식으로 문서가 렌더링됩니다.

커널 소스 설치:

  • 전체 소스를 설치하는 경우 커널 tarball을 권한이 있는 디렉토리(예: 홈 디렉토리)에 넣고 압축을 풉니다:

    xz -cd linux-4.X.tar.xz | tar xvf -

    "X"를 최신 커널의 버전 번호로 바꾸십시오.

    /usr/src/linux/ 영역을 사용하지 마십시오! 이 영역에는 라이브러리 헤더 파일이 사용하는 (일반적으로 불완전한) 커널 헤더 세트가 있습니다. 이들은 라이브러리와 일치해야 하며, 그날그날의 커널 (kernel-du-jour)에 의해 망가져서는 안 됩니다.

  • 4.x 릴리즈 사이에 패치로 업그레이드할 수도 있습니다. 패치는 xz 형식으로 배포됩니다. 패치로 설치하려면 모든 최신 패치 파일을 받아 커널 소스의 최상위 디렉토리(linux-4.X)로 이동한 후 다음을 실행하십시오:

    xz -cd ../patch-4.x.xz | patch -p1

    현재 소스 트리의 버전 "X"보다 큰 모든 버전에 대해 "x"를 순서대로 바꾸면 됩니다. 백업 파일(some-file-name~ 또는 some-file-name.orig)을 제거하고 실패한 패치(some-file-name# 또는 some-file-name.rej)가 없는지 확인하는 것이 좋습니다. 있다면 여러분이나 제가 실수를 한 것입니다.

    4.x 커널용 패치와 달리 4.x.y 커널(-stable 커널이라고도 함)용 패치는 증분식이 아니라 기본 4.x 커널에 직접 적용됩니다. 예를 들어 기본 커널이 4.0이고 4.0.3 패치를 적용하려면 먼저 4.0.1 및 4.0.2 패치를 적용하지 말아야 합니다. 마찬가지로 커널 버전 4.0.2를 실행 중이고 4.0.3으로 이동하려면 4.0.3 패치를 적용하기 전에 먼저 4.0.2 패치를 되돌려야(즉, patch -R) 합니다. 이에 대한 자세한 내용은 Documentation/applying-patches.txt에서 읽을 수 있습니다.

    또는 patch-kernel 스크립트를 사용하여 이 프로세스를 자동화할 수 있습니다. 현재 커널 버전을 확인하고 발견된 모든 패치를 적용합니다.

    linux/scripts/patch-kernel linux

    위 명령의 첫 번째 인수는 커널 소스의 위치입니다. 패치는 현재 디렉토리에서 적용되지만, 대체 디렉토리는 두 번째 인수로 지정할 수 있습니다.

  • 오래된 .o 파일과 종속성이 남아 있지 않은지 확인하십시오:

    cd linux make mrproper

    이제 소스가 올바르게 설치되어 있어야 합니다.

소프트웨어 요구 사항

4.x 커널을 컴파일하고 실행하려면 다양한 소프트웨어 패키지의 최신 버전이 필요합니다. 필요한 최소 버전 번호와 이러한 패키지의 업데이트를 얻는 방법은 Documentation/Changes를 참조하십시오. 지나치게 오래된 버전의 패키지를 사용하면 추적하기 매우 어려운 간접적인 오류가 발생할 수 있으므로, 빌드 또는 작동 중에 명백한 문제가 발생할 때 패키지를 업데이트하면 된다고 가정하지 마십시오.

커널 빌드 디렉토리:

커널을 컴파일할 때 모든 출력 파일은 기본적으로 커널 소스 코드와 함께 저장됩니다. "make O=output/dir" 옵션을 사용하면 출력 파일 (.config 포함)의 대체 위치를 지정할 수 있습니다. 예:

 kernel source code: /usr/src/linux-4.X
 build directory:    /home/name/build/kernel

커널을 설정하고 빌드하려면 다음을 사용하십시오:

 cd /usr/src/linux-4.X
 make O=/home/name/build/kernel menuconfig
 make O=/home/name/build/kernel
 sudo make O=/home/name/build/kernel modules_install install

참고: 'O=output/dir' 옵션을 사용하는 경우 모든 make 호출에 대해 사용해야 합니다.

커널 설정:

한 개의 마이너 버전만 업그레이드하는 경우에도 이 단계를 건너뛰지 마십시오. 각 릴리즈마다 새 구성 옵션이 추가되며, 구성 파일이 예상대로 설정되지 않으면 이상한 문제가 발생합니다. 기존 구성을 최소한의 작업으로 새 버전으로 가져오려면 "make oldconfig"를 사용하십시오. 새 질문에 대한 답변만 묻습니다.

  • 대체 구성 명령은 다음과 같습니다:

    "make config" 일반 텍스트 인터페이스.

    "make menuconfig" 텍스트 기반 컬러 메뉴, 라디오리스트 및 대화상자.

    "make nconfig" 향상된 텍스트 기반 컬러 메뉴.

    "make xconfig" X windows(Qt) 기반 구성 도구.

    "make gconfig" X windows(Gtk) 기반 구성 도구.

    "make oldconfig" 기존 ./.config 파일의 내용을 기반으로 모든 질문에 기본값을 적용하고 새 구성 심볼에 대해 묻습니다.

    "make silentoldconfig" 위와 동일하지만 이미 답변된 질문으로 화면을 어지럽히지 않습니다. 또한 종속성을 업데이트합니다.

    "make olddefconfig" 위와 동일하지만 프롬프트 없이 새 심볼을 기본값으로 설정합니다.

    "make defconfig" 아키텍처에 따라 arch/$ARCH/defconfig 또는 arch/$ARCH/configs/${PLATFORM}_defconfig의 기본 심볼 값을 사용하여 ./.config 파일을 생성합니다.

    "make ${PLATFORM}_defconfig" arch/$ARCH/configs/${PLATFORM}_defconfig의 기본 심볼 값을 사용하여 ./.config 파일을 생성합니다. "make help"를 사용하여 아키텍처에서 사용 가능한 모든 플랫폼 목록을 확인하십시오.

    "make allyesconfig" 심볼 값을 가능한 한 'y'로 설정하여 ./.config 파일을 생성합니다.

    "make allmodconfig" 심볼 값을 가능한 한 'm'으로 설정하여 ./.config 파일을 생성합니다.

    "make allnoconfig" 심볼 값을 가능한 한 'n'으로 설정하여 ./.config 파일을 생성합니다.

    "make randconfig" 심볼 값을 임의의 값으로 설정하여 ./.config 파일을 생성합니다.

    "make localmodconfig" 현재 구성과 로드된 모듈(lsmod)을 기반으로 구성을 생성합니다. 로드된 모듈에 필요하지 않은 모듈 옵션을 비활성화합니다.

                        다른 머신용 localmodconfig를 생성하려면 해당
                        머신의 lsmod를 파일에 저장하고 LSMOD
                        매개변수로 전달하십시오.
    
                target$ lsmod > /tmp/mylsmod
                target$ scp /tmp/mylsmod host:/tmp
    
                host$ make LSMOD=/tmp/mylsmod localmodconfig
    
                        위의 방법은 크로스 컴파일할 때도 작동합니다.
    

    "make localyesconfig" localmodconfig와 유사하지만 모든 모듈 옵션을 내장(=y) 옵션으로 변환합니다.

    Linux 커널 구성 도구 사용에 대한 자세한 내용은 Documentation/kbuild/kconfig.txt에서 확인할 수 있습니다.

  • "make config"에 대한 참고 사항:

    • 불필요한 드라이버가 있으면 커널이 커지고, 어떤 상황에서는 문제가 발생할 수 있습니다: 존재하지 않는 컨트롤러 카드를 프로빙하면 다른 컨트롤러가 혼란스러워질 수 있습니다.

    • "Processor type"을 386보다 높게 설정하여 커널을 컴파일하면 386에서 작동하지 않는 커널이 생성됩니다. 커널은 부팅 시 이를 감지하고 포기합니다.

    • 수학 에뮬레이션(math-emulation)을 컴파일한 커널은 코프로세서가 있으면 여전히 코프로세서를 사용합니다. 수학 에뮬레이션은 그 경우 사용되지 않을 뿐입니다. 커널은 약간 커지지만 수학 코프로세서가 있든 없든 다른 머신에서 작동합니다.

    • "kernel hacking" 구성 세부 사항은 일반적으로 커널을 더 크거나 느리게(또는 둘 다) 만들며, 일부 루틴을 구성하여 잘못된 코드를 적극적으로 깨뜨려 커널 문제(kmalloc())를 찾도록 하면 커널을 덜 안정적으로 만들 수도 있습니다. 따라서 "development", "experimental" 또는 "debugging" 기능에 대한 질문에는 'n'이라고 답해야 할 것입니다.

커널 컴파일:

  • 최소한 gcc 3.2를 사용할 수 있는지 확인하십시오. 자세한 내용은 Documentation/Changes를 참조하십시오.

    이 커널로 a.out 사용자 프로그램을 계속 실행할 수 있습니다.

  • 압축된 커널 이미지를 만들려면 "make"를 실행하십시오. 커널 makefile에 맞게 lilo가 설치되어 있으면 "make install"을 실행할 수도 있지만, 특정 lilo 설정을 먼저 확인하는 것이 좋습니다.

    실제 설치를 수행하려면 root여야 하지만 일반적인 빌드에서는 root가 필요하지 않습니다. root의 이름을 함부로 사용하지 마십시오.

  • 커널의 일부를 `모듈'로 구성한 경우 "make modules_install"도 실행해야 합니다.

  • 자세한 커널 컴파일/빌드 출력:

    일반적으로 커널 빌드 시스템은 비교적 조용한 모드로 실행됩니다 (완전히 조용하지는 않음). 그러나 때로는 여러분이나 다른 커널 개발자가 컴파일, 링크 또는 기타 명령이 실제로 실행되는 방식을 정확히 확인해야 할 필요가 있습니다. 이를 위해 "verbose" 빌드 모드를 사용하십시오. "make" 명령에 "V=1"을 삽입하면 됩니다. 예:

    make V=1 all

    빌드 시스템이 각 대상의 재빌드 이유도 알려주게 하려면 "V=2"를 사용하십시오. 기본값은 "V=0"입니다.

도구 다운로드