Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
kafel — सिस्कॉल फ़िल्टरिंग नीतियों को निर्दिष्ट करने के लिए एक भाषा और लाइब्रेरी। | Kitploit
उपकरण/GitHubGitHub/google/kafel
स्थैतिक विश्लेषणकोड विश्लेषणउपयोगिताएँ और फ्रेमवर्क
GitHubgoogle/kafel

kafel

सिस्कॉल फ़िल्टरिंग नीतियों को निर्दिष्ट करने के लिए एक भाषा और लाइब्रेरी।

रिपॉजिटरी देखेंवेबसाइट
363594 महीने पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

यह क्या है?

Kafel एक भाषा और लाइब्रेरी है जो syscall फ़िल्टरिंग नीतियों को निर्दिष्ट करने के लिए है। नीतियों को BPF कोड में संकलित किया जाता है जिसका उपयोग seccomp-filter के साथ किया जा सकता है।

यह एक आधिकारिक Google उत्पाद नहीं है।

उपयोग

विस्तृत त्रुटि रिपोर्टिंग के साथ

root@kitploit:~
struct sock_fprog prog;
kafel_ctxt_t ctxt = kafel_ctxt_create();
kafel_set_input_string(ctxt, seccomp_policy);
if (kafel_compile(ctxt, &prog)) {
  fprintf(stderr, "policy compilation failed: %s", kafel_error_msg(ctxt));
  kafel_ctxt_destroy(&ctxt);
  exit(-1);
}
kafel_ctxt_destroy(&ctxt);
prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &prog, 0, 0);
free(prog.filter);

विस्तृत त्रुटि रिपोर्टिंग के बिना

root@kitploit:~
struct sock_fprog prog;
if (kafel_compile_string(seccomp_policy, &prog)) {
  fputs("policy compilation failed", stderr);
  exit(-1);
}
prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &prog, 0, 0);
free(prog.filter);

नीति भाषा

नीतियों को परिभाषित करने के लिए एक सरल भाषा का उपयोग किया जाता है।

नीति फ़ाइल में कथन होते हैं।

एक कथन हो सकता है:

  • एक स्थिरांक परिभाषा
  • एक नीति परिभाषा
  • एक नीति परिभाषा कथन
  • एक डिफ़ॉल्ट कार्य कथन

फ़ाइल स्कोप में रखे गए नीति परिभाषा कथन अंतर्निहित शीर्ष स्तर की नीति में जोड़े जाएंगे। इस शीर्ष स्तर की नीति को संकलित किया जाएगा।

डिफ़ॉल्ट कार्य कथन

root@kitploit:~
DEFAULT the_action

निर्दिष्ट करता है कि जब कोई नियम मेल नहीं खाता तो कार्रवाई the_action ली जानी चाहिए।

डिफ़ॉल्ट कार्रवाई केवल एक बार निर्दिष्ट की जानी चाहिए।

यदि नीति फ़ाइल कोई डिफ़ॉल्ट कार्रवाई निर्दिष्ट नहीं करती है, तो डिफ़ॉल्ट कार्रवाई KILL होगी

संख्याएँ

Kafel निम्नलिखित संख्या संकेतन का समर्थन करता है:

  • दशमलव 42
  • हेक्साडेसिमल 0xfa1
  • ऑक्टल 0777
  • बाइनरी 0b10101

स्थिरांक परिभाषाएँ

अपनी नीतियों को अधिक पढ़ने योग्य बनाने के लिए आप संख्यात्मक स्थिरांक परिभाषित कर सकते हैं। स्थिरांक परिभाषाएँ लगभग कहीं भी नीति फ़ाइल में रखी जा सकती हैं। एक स्थिरांक परिभाषा को नीति परिभाषा के अंदर नहीं रखा जा सकता है। परिभाषित स्थिरांक का उपयोग तब कहीं भी किया जा सकता है जहाँ एक संख्या की अपेक्षा होती है।

root@kitploit:~
#define MYCONST 123

नीति परिभाषाएँ

नीति परिभाषा कार्रवाई ब्लॉकों और उपयोग कथनों की एक सूची है जो अल्पविराम द्वारा अलग की गई है।

samples/ में कुछ उदाहरण नीतियाँ हैं जो समर्थित सुविधाओं को प्रदर्शित करती हैं।

उपयोग कथन

एक USE someOtherPolicy ऐसा व्यवहार करता है जैसे someOtherPolicy का बॉडी उसके स्थान पर चिपका दिया गया हो। आप केवल उन नीतियों का उपयोग कर सकते हैं जो उपयोग कथन से पहले परिभाषित की गई हैं।

उपयोग कथनों के साथ आप फ़िल्टरिंग नियमों के सार्थक समूह बना सकते हैं जो बड़ी नीतियों के निर्माण खंड हैं।

कार्रवाई ब्लॉक

कार्रवाई ब्लॉक में एक लक्ष्य और syscall मिलान नियमों की सूची होती है जो अल्पविराम से अलग होती है।

मिलान किए गए पहले नियम का लक्ष्य नीति निर्णय है।

निम्नलिखित तालिका Kafel लक्ष्यों और उनके संबंधित seccomp-filter वापसी मानों को सूचीबद्ध करती है।

Syscall मिलान नियम

एक नियम में syscall नाम और बूलियन अभिव्यक्तियों की एक वैकल्पिक सूची होती है।

बूलियन अभिव्यक्तियों की सूची अल्पविराम द्वारा अलग की गई है। एक अल्पविराम अर्थ || के बराबर है लेकिन इसकी सबसे कम प्राथमिकता है, इसलिए इसे पढ़ना आसान हो सकता है।

Syscall नामकरण

सामान्यतः syscalls को Linux कर्नेल में परिभाषित उनके नामों से निर्दिष्ट किया जाता है। हालाँकि, आप कस्टम syscalls को भी फ़िल्टर कर सकते हैं जो मानक syscall सूची में नहीं हैं। आप या तो एक स्थिरांक परिभाषित कर सकते हैं और इसे syscall नाम के स्थान पर उपयोग कर सकते हैं या SYSCALL कीवर्ड का उपयोग कर सकते हैं।

root@kitploit:~
#define mysyscall -1

POLICY my_const {
  ALLOW {
    mysyscall
  }
}

POLICY my_literal {
  ALLOW {
    SYSCALL[-1]
  }
}

आर्किटेक्चर-विशिष्ट फ़िल्टर

आप ON गार्ड का उपयोग करके syscall नियम को आर्किटेक्चर के एक उपसमूह तक सीमित कर सकते हैं। गार्ड या तो एक एकल आर्किटेक्चर नाम या ब्रेसिज़ में लिपटी अल्पविराम से अलग की गई सूची को स्वीकार करता है। नाम kafel_set_target_archs द्वारा पहचाने गए लक्ष्यों के अनुरूप हैं (उदाहरण के लिए x86_64, x86, arm, aarch64, mips64, riscv64, m68k)।

root@kitploit:~
ALLOW {
  io_uring_setup ON x86_64,
  arm_fadvise64_64 ON arm
}

जब गार्ड के बाहर के आर्किटेक्चर के लिए संकलन किया जाता है, तो syscall नियम को अनदेखा कर दिया जाता है, इसलिए क्रॉस-आर्किटेक्चर नीतियों को syscall उपलब्धता अंतरों के लिए पूरी नीतियों को दोहराने की आवश्यकता नहीं होती है।

तर्क फ़िल्टरिंग

बूलियन अभिव्यक्तियों का उपयोग syscalls को उनके तर्कों के आधार पर फ़िल्टर करने के लिए किया जाता है। एक अभिव्यक्ति C भाषा सिंटैक्स जैसी होती है, सिवाय इसके कि कोई अंकगणितीय ऑपरेटर नहीं हैं।

root@kitploit:~
some_syscall(first_arg, my_arg_name) { first_arg == 42 && my_arg_name != 42 }

बिटवाइज़ और (&) और या ('|') ऑपरेटरों का उपयोग फ्लैग्स के परीक्षण के लिए किया जा सकता है।

root@kitploit:~
mmap { (prot & PROT_EXEC) == 0 },
open { flags == O_RDONLY|O_CLOEXEC }

आपको प्रसिद्ध syscalls के लिए तर्क घोषित करने की आवश्यकता नहीं है, बल्कि Linux कर्नेल और man पृष्ठों में निर्दिष्ट उनके सामान्य नामों का उपयोग कर सकते हैं।

root@kitploit:~
write { fd == 1 }

इन्क्लूड निर्देश

नीतियों के पुन: उपयोग और संरचना को सरल बनाने के लिए, kafel इन्क्लूड सहायता प्रदान करता है।

root@kitploit:~
#include "some_other_file.policy"

Kafel इन्क्लूड की गई फ़ाइलों को केवल उन निर्देशिकाओं में खोजता है जो स्पष्ट रूप से खोज पथों में जोड़ी गई हैं।

root@kitploit:~
kafel_add_include_search_path(ctxt, "includes/path");

includes/path को खोज पथों में जोड़ता है - उदाहरण इन्क्लूड निर्देश तब includes/path/some_other_file.policy का संदर्भ देगा।

इन्क्लूड निर्देश एक न्यूलाइन या अर्धविराम द्वारा समाप्त होता है। एक निर्देश में व्हाइटस्पेस द्वारा अलग की गई कई फ़ाइलें निर्दिष्ट की जा सकती हैं।

root@kitploit:~
#include "first.policy" "second.policy"; #include "third.policy"

उदाहरण

जब nsjail के साथ उपयोग किया जाता है, तो निम्नलिखित कमांड आपके शेल के लिए एक काफी सीमित वातावरण बनाने की अनुमति देता है

root@kitploit:~
$ ./nsjail --chroot / --seccomp_string 'POLICY a { ALLOW { write, execve, brk, access, mmap, open, newfstat, close, read, mprotect, arch_prctl, munmap, getuid, getgid, getpid, rt_sigaction, geteuid, getppid, getcwd, getegid, ioctl, fcntl, newstat, clone, wait4, rt_sigreturn, exit_group } } USE a DEFAULT KILL' -- /bin/sh -i
root@kitploit:~
[2017-01-15T21:53:08+0100] Mode: STANDALONE_ONCE
[2017-01-15T21:53:08+0100] Jail parameters: hostname:'NSJAIL', chroot:'/', process:'/bin/sh', bind:[::]:0, max_conns_per_ip:0, uid:(ns:1000, global:1000), gid:(ns:1000, global:1000), time_limit:0, personality:0, daemonize:false, clone_newnet:true, clone_newuser:true, clone_newns:true, clone_newpid:true, clone_newipc:true, clonew_newuts:true, clone_newcgroup:false, keep_caps:false, tmpfs_size:4194304, disable_no_new_privs:false, pivot_root_only:false
[2017-01-15T21:53:08+0100] Mount point: src:'/' dst:'/' type:'' flags:0x5001 options:''
[2017-01-15T21:53:08+0100] Mount point: src:'(null)' dst:'/proc' type:'proc' flags:0x0 options:''
[2017-01-15T21:53:08+0100] PID: 18873 about to execute '/bin/sh' for [STANDALONE_MODE]
/bin/sh: 0: can't access tty; job control turned off
$ set
IFS='
'
OPTIND='1'
PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
PPID='0'
PS1='$ '
PS2='> '
PS4='+ '
PWD='/'
$ id
Bad system call
$ exit
[2017-01-15T21:53:17+0100] PID: 18873 exited with status: 159, (PIDs left: 0)
टूल डाउनलोड करें
Kafelseccomp-filter
ALLOWSECCOMP_RET_ALLOW
LOGSECCOMP_RET_LOG
KILL, KILL_THREAD, DENYSECCOMP_RET_KILL
KILL_PROCESSSECCOMP_RET_KILL_PROCESS
USER_NOTIFSECCOMP_RET_USER_NOTIF
ERRNO(number)SECCOMP_RET_ERRNO+number
TRAP(number)SECCOMP_RET_TRAP+number
TRACE(number)SECCOMP_RET_TRACE+number