>  기사  >  시스템 튜토리얼  >  다음 솔루션을 사용하여 Linux 커널 기능을 가로챌 수 있습니다.

다음 솔루션을 사용하여 Linux 커널 기능을 가로챌 수 있습니다.

PHPz
PHPz앞으로
2024-02-15 17:33:31653검색

다음 솔루션을 사용하여 Linux 커널 기능을 차단할 수 있습니다.

Linux 보안 API 사용

모범 사례의 관점에서 보면 Linux 보안 API의 후크 기능을 사용하는 것이 최선의 선택이라고 생각합니다. 이 소켓은 이러한 목적으로 설계되었기 때문입니다. 커널 코드의 핵심 사항에는 보안 기능 호출이 포함되어 있으며 이로 인해 보안 모듈 설치가 확대될 수 있습니다. 이 모듈은 특정 작업의 컨텍스트를 연구하고 이를 허용할지 금지할지 결정할 수 있습니다. 불행하게도 LinuxSecurityAPI에는 두 가지 주요 제한 사항이 있습니다.

调用linux内核函数_linux内核调试方法总结_linux调用内核函数

실제로 시스템에 여러 보안 모듈이 포함될 수 있는지 여부에 대해 커널 개발자마다 생각이 다르며, 모듈을 동적으로 로드할 수 없다는 것은 확실한 사실입니다. 시스템이 처음부터 안전하게 유지되도록 하려면 보안 모듈이 커널의 일부여야 합니다. 이러한 이유로 Linux 보안 API를 사용하려면 사용자 정의 Linux 커널을 생성해야 합니다.

시스템 호출 테이블 변경

주로 사용자 애플리케이션에서 수행하는 작업에 사용되므로 시스템 호출 수준에서 구현할 수 있습니다. 모든 Linux 시스템 호출 처리기는 sys_call_table 테이블에 저장됩니다. 이 표의 값을 수정하면 시스템 동작이 수정됩니다. 이전 핸들러 값을 저장하고 테이블에 자체 핸들러를 추가하여 시스템 호출을 연결하면 이를 수행할 수 있습니다. 이러한 방법에는 몇 가지 장점과 단점도 있습니다.

주요 장점은 다음과 같습니다.

그러나 이러한 방법에는 몇 가지 단점도 있습니다.

기술적 구현이 더 복잡합니다. 실제로 Linux 커널 함수 호출 테이블의 값을 바꾸는 것은 어렵지 않지만 개별 조건과 일부 명확하지 않은 솔루션이 필요한 몇 가지 추가 작업이 있습니다.

调用linux内核函数_linux内核调试方法总结_linux调用内核函数

훅 시스템 호출만 가능합니다. 이 접근 방식을 사용하면 시스템 호출 처리기를 대체할 수 있으므로 진입점이 크게 제한됩니다. 모든 추가 감지는 시스템 호출 전후에 수행될 수 있으며 시스템 호출 매개변수와 해당 반환 값만 있습니다. 따라서 때로는 프로세스의 액세스 권한과 시스템 호출 매개변수의 유효성을 주의 깊게 확인해야 할 수도 있습니다. 사용자 프로세스 메모리를 두 번 복사해야 하는 경우 추가 비용이 발생하는 경우도 있는 것으로 알려졌다. 예를 들어 매개변수가 시계 바늘을 통해 전달되면 두 개의 복사본이 있습니다. 하나는 자체적으로 생성되고 다른 하나는 원래 핸들러에서 생성됩니다.

Kprobe 사용

Kprobes — Linux 커널 추적 및 디버깅을 위해 설계된 API입니다. Kprobes를 사용하면 모든 커널 명령에 대한 사전 및 사후 프로세서는 물론 함수 입력 및 함수 반환 처리기를 설치할 수 있습니다. 핸들러는 레지스터에 액세스하고 이를 수정할 수 있습니다. 이렇게 하면 파일 실행 흐름을 모니터링하고 변경할 수 있습니다.

调用linux内核函数_linux内核调试方法总结_linux调用内核函数

Kprobes를 사용하여 Linux 커널 기능을 추적하는 주요 용도는 다음과 같습니다.

Kprobe에는 단점도 있습니다:

접합

커널 함수 후킹을 구성하는 고전적인 방법: 함수 시작 부분의 지침을 사용자 지정 처리기로 무조건 점프하는 것으로 바꿉니다. 원래 명령어는 다른 위치에 연결되어 차단된 기능으로 다시 점프하기 전에 실행됩니다. 이러한 이유로 두 번의 점프를 통해 코드를 함수로 엮을 수 있습니다. 이는 kprobes 점프 최적화와 동일한 방식으로 작동합니다. 스플라이싱을 사용하면 kprobe를 사용하는 것과 동일한 결과를 얻을 수 있지만 오버헤드가 적고 프로세스를 완전히 제어할 수 있습니다.

접합 사용의 장점은 매우 중요합니다:

그러나 이러한 방법에는 기술적 복잡성이라는 한 가지 주요 단점이 있습니다. 함수에서 기계어를 바꾸는 것은 쉽지 않습니다. 스플라이싱 을 사용하여 Linux 커널 함수 를 호출하려면 다음 작업을 완료해야 합니다.

상대적으로 말하자면 스플라이싱은 Linux 커널 기능을 연결하는 데 매우 유용한 방법일 수 있습니다. 하지만 이 방법을 구현하는 것은 너무 복잡합니다. 우리 자신의 역량과 기타 인센티브를 고려할 때 당분간 이러한 방법을 채택할 준비가 되어 있지 않기 때문에 이를 후보로 사용합니다.

위 내용은 다음 솔루션을 사용하여 Linux 커널 기능을 가로챌 수 있습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 itcool.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제