Documentation ¶
Index ¶
- Constants
- Variables
- func ClearModulesState()
- func FillModulesFromProcFs(kernelSymbols helpers.KernelSymbolTable) error
- func GetWakeupChannelRead() <-chan ScanRequest
- func InitHiddenKernelModules(modsMap *bpf.BPFMap, newModMap *bpf.BPFMap, deletedModMap *bpf.BPFMap, ...) error
- type DeriveFunction
- func ContainerCreate(cts *containers.Containers) DeriveFunction
- func ContainerRemove(cts *containers.Containers) DeriveFunction
- func DetectHookedSyscall(kernelSymbols helpers.KernelSymbolTable) DeriveFunction
- func HiddenKernelModule() DeriveFunction
- func HookedSeqOps(kernelSymbols helpers.KernelSymbolTable) DeriveFunction
- func NetPacketDNS() DeriveFunction
- func NetPacketDNSRequest() DeriveFunction
- func NetPacketDNSResponse() DeriveFunction
- func NetPacketHTTP() DeriveFunction
- func NetPacketHTTPRequest() DeriveFunction
- func NetPacketHTTPResponse() DeriveFunction
- func NetPacketICMP() DeriveFunction
- func NetPacketICMPv6() DeriveFunction
- func NetPacketIPv4() DeriveFunction
- func NetPacketIPv6() DeriveFunction
- func NetPacketTCP() DeriveFunction
- func NetPacketUDP() DeriveFunction
- func SymbolsCollision(soLoader sharedobjs.DynamicSymbolsLoader, policies *policy.Policies) DeriveFunction
- func SymbolsLoaded(soLoader sharedobjs.DynamicSymbolsLoader, policies *policy.Policies) DeriveFunction
- type ScanRequest
- type SymbolsCollisionArgsGenerator
- type Table
Constants ¶
const ( ProcModules uint32 = 1 << 0 // A hidden module detected by /proc/modules logic NewMod = 1 << 3 // A new modules only scan - without HiddenModule flag on, this is not yet a detection. See newModsCheckForHidden FullScan = 1 << 30 // Do a full scan - received after a new module was loaded (and finished running his init function) HiddenModule = 1 << 31 // Submit the module as event to user )
const ( IPPROTO_TCP uint8 = 6 IPPROTO_UDP uint8 = 17 )
Variables ¶
var NetSeqOps = [6]string{
"tcp4_seq_ops",
"tcp6_seq_ops",
"udp_seq_ops",
"udp6_seq_ops",
"raw_seq_ops",
"raw6_seq_ops",
}
Struct names for the interfaces HookedSeqOpsEventID checks for hooks The show,start,next and stop operation function pointers will be checked for each of those
var NetSeqOpsFuncs = [4]string{
"show",
"start",
"next",
"stop",
}
Functions ¶
func ClearModulesState ¶ added in v0.13.0
func ClearModulesState()
ClearModulesState clears the map (while not scanning)
func FillModulesFromProcFs ¶ added in v0.13.0
func FillModulesFromProcFs(kernelSymbols helpers.KernelSymbolTable) error
FillModulesFromProcFs fills a map with modules from /proc/modules, to be checked in kernel-space for inconsistencies.
func GetWakeupChannelRead ¶ added in v0.15.0
func GetWakeupChannelRead() <-chan ScanRequest
GetWakeupChannelRead returns the reading-end of the channel
Types ¶
type DeriveFunction ¶ added in v0.11.0
DeriveFunction is a function prototype for a function that receives an event as argument and may produce a new event if relevant. It returns a derived or empty event, depending on successful derivation, and an error if one occurred.
func ContainerCreate ¶
func ContainerCreate(cts *containers.Containers) DeriveFunction
ContainerCreate receives a containers as a closure argument to track it's containers. If it receives a cgroup_mkdir event, it can derive a container_create event from it.
func ContainerRemove ¶
func ContainerRemove(cts *containers.Containers) DeriveFunction
ContainerRemove receives a containers.Containers object as a closure argument to track it's containers. If it receives a cgroup_rmdir event, it can derive a container_remove event from it.
func DetectHookedSyscall ¶
func DetectHookedSyscall(kernelSymbols helpers.KernelSymbolTable) DeriveFunction
func HiddenKernelModule ¶ added in v0.13.0
func HiddenKernelModule() DeriveFunction
func HookedSeqOps ¶
func HookedSeqOps(kernelSymbols helpers.KernelSymbolTable) DeriveFunction
func NetPacketDNS ¶ added in v0.10.0
func NetPacketDNS() DeriveFunction
func NetPacketDNSRequest ¶ added in v0.10.0
func NetPacketDNSRequest() DeriveFunction
func NetPacketDNSResponse ¶ added in v0.10.0
func NetPacketDNSResponse() DeriveFunction
func NetPacketHTTP ¶ added in v0.11.0
func NetPacketHTTP() DeriveFunction
func NetPacketHTTPRequest ¶ added in v0.11.0
func NetPacketHTTPRequest() DeriveFunction
func NetPacketHTTPResponse ¶ added in v0.11.0
func NetPacketHTTPResponse() DeriveFunction
func NetPacketICMP ¶ added in v0.10.0
func NetPacketICMP() DeriveFunction
func NetPacketICMPv6 ¶ added in v0.10.0
func NetPacketICMPv6() DeriveFunction
func NetPacketIPv4 ¶ added in v0.10.0
func NetPacketIPv4() DeriveFunction
func NetPacketIPv6 ¶ added in v0.10.0
func NetPacketIPv6() DeriveFunction
func NetPacketTCP ¶ added in v0.10.0
func NetPacketTCP() DeriveFunction
func NetPacketUDP ¶ added in v0.10.0
func NetPacketUDP() DeriveFunction
func SymbolsCollision ¶ added in v0.12.0
func SymbolsCollision(soLoader sharedobjs.DynamicSymbolsLoader, policies *policy.Policies, ) DeriveFunction
func SymbolsLoaded ¶ added in v0.8.1
func SymbolsLoaded( soLoader sharedobjs.DynamicSymbolsLoader, policies *policy.Policies, ) DeriveFunction
type ScanRequest ¶ added in v0.15.0
ScanRequest the structure that is passed in the wake up channel
type SymbolsCollisionArgsGenerator ¶ added in v0.12.0
type SymbolsCollisionArgsGenerator struct {
// contains filtered or unexported fields
}
SymbolsCollisionArgsGenerator creates the shared object symbols collisions derived events. To do so, it uses multiple caches to accelerate performance and reduce chances for failure.
type Table ¶ added in v0.8.3
Table defines a table between events and events they can be derived into corresponding to a deriveFunction The Enabled flag is used in order to skip derivation of unneeded events.
func (Table) DeriveEvent ¶ added in v0.11.0
DeriveEvent takes a trace.Event and checks if it can derive additional events from it as defined by a derivationTable.
Source Files ¶
- container_create.go
- container_remove.go
- derive.go
- detect_hooked_syscall.go
- errors.go
- hidden_kernel_module.go
- hooked_seq_ops.go
- net_packet_dns.go
- net_packet_helpers.go
- net_packet_http.go
- net_packet_icmp.go
- net_packet_icmpv6.go
- net_packet_ipv4.go
- net_packet_ipv6.go
- net_packet_tcp.go
- net_packet_udp.go
- symbols_collision.go
- symbols_loaded.go