Skip to content

Trying to add hook on __NR_openat #2

Description

@akrogames

Hi @jha Just for fun, I am trying to add hook on __NR_openat. Unfortunately, there are a memory issue. Can you check with me ?

I'm testing on 5.3.0-46-generic kernel

Thanks for your work.

In module.c :
sys_hook_add64(lkh_sys_hook, __NR_openat, (void *)openat_hook);

In hook.h :

typedef asmlinkage long (*original_sys_openat)(int, const char *, int, umode_t);
asmlinkage long openat_hook(int, const char *, int, umode_t);

In hook.c :

asmlinkage long openat_hook(int fds, const char *filename, int flags, umode_t mode) {
    original_sys_openat sys_openat;

    printk(KERN_INFO "tde : In my SYS_OPEN !!!\n");
    printk(KERN_INFO "tde : NR OPEN %d\n", __NR_openat);
    sys_openat = (original_sys_openat)sys_hook_get_orig64(lkh_sys_hook, __NR_openat);

    return sys_openat(fds, filename, flags, mode);
}

Logs from dmesg :

[Mon Apr 27 11:08:23 2020] lkh: loading out-of-tree module taints kernel.
[Mon Apr 27 11:08:23 2020] lkh: module verification failed: signature and/or required key missing - tainting kernel
[Mon Apr 27 11:08:23 2020] lkh initializing...
[Mon Apr 27 11:08:23 2020] lkh loaded
[Mon Apr 27 11:08:23 2020] tde : In my SYS_OPEN !!!
[Mon Apr 27 11:08:23 2020] tde : NR OPEN 257
[Mon Apr 27 11:08:23 2020] BUG: unable to handle page fault for address: 00000000402f3fb8
[Mon Apr 27 11:08:23 2020] #PF: supervisor read access in kernel mode
[Mon Apr 27 11:08:23 2020] #PF: error_code(0x0000) - not-present page
[Mon Apr 27 11:08:23 2020] PGD 0 P4D 0
[Mon Apr 27 11:08:23 2020] Oops: 0000 [#1] SMP PTI
[Mon Apr 27 11:08:23 2020] CPU: 1 PID: 504 Comm: systemd-udevd Tainted: G OE 5.3.0-46-generic #38~18.04.1-Ubuntu
[Mon Apr 27 11:08:23 2020] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014
[Mon Apr 27 11:08:23 2020] RIP: 0010:__x64_sys_openat+0x6/0x30
[Mon Apr 27 11:08:23 2020] Code: 60 8b 77 28 bf 9c ff ff ff 48 89 e5 80 ce 80 e8 d0 fc ff ff 5d c3 0f 1f 40 00 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 55 <8b> 57 60 0f b7 4f 38 48 8b 77 68 48 8b 7f 70 48 89 e5 80 ce 80 e8
[Mon Apr 27 11:08:23 2020] RSP: 0018:ffffa7d4402f3ef8 EFLAGS: 00010246
[Mon Apr 27 11:08:23 2020] RAX: ffffffff8a2cb7b0 RBX: 00000000002a0000 RCX: 0000000000000000
[Mon Apr 27 11:08:23 2020] RDX: 00000000e258c63a RSI: 0000000000000000 RDI: 00000000402f3f58
[Mon Apr 27 11:08:23 2020] RBP: ffffa7d4402f3f28 R08: 0000000000000285 R09: 0000000000000004
[Mon Apr 27 11:08:23 2020] R10: 0000000000000000 R11: 0000000000000001 R12: 00000000402f3f58
[Mon Apr 27 11:08:23 2020] R13: 0000000000000000 R14: 00000000e258c63a R15: 0000000000000000
[Mon Apr 27 11:08:23 2020] FS: 00007fca0ba55680(0000) GS:ffff96713ba80000(0000) knlGS:0000000000000000
[Mon Apr 27 11:08:23 2020] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[Mon Apr 27 11:08:23 2020] CR2: 00000000402f3fb8 CR3: 0000000133484002 CR4: 00000000003606e0
[Mon Apr 27 11:08:23 2020] Call Trace:
[Mon Apr 27 11:08:23 2020] ? openat_hook+0x5a/0x63 [lkh]
[Mon Apr 27 11:08:23 2020] do_syscall_64+0x5a/0x130
[Mon Apr 27 11:08:23 2020] entry_SYSCALL_64_after_hwframe+0x44/0xa9
[Mon Apr 27 11:08:23 2020] RIP: 0033:0x7fca0b558c8e
[Mon Apr 27 11:08:23 2020] Code: 25 00 00 41 00 3d 00 00 41 00 74 48 48 8d 05 81 0c 2e 00 8b 00 85 c0 75 69 89 f2 b8 01 01 00 00 48 89 fe bf 9c ff ff ff 0f 05 <48> 3d 00 f0 ff ff 0f 87 a6 00 00 00 48 8b 4c 24 28 64 48 33 0c 25
[Mon Apr 27 11:08:23 2020] RSP: 002b:00007ffc47b4d290 EFLAGS: 00000246 ORIG_RAX: 0000000000000101
[Mon Apr 27 11:08:23 2020] RAX: ffffffffffffffda RBX: 00005647e341f390 RCX: 00007fca0b558c8e
[Mon Apr 27 11:08:23 2020] RDX: 00000000002a0000 RSI: 00005647e258c63a RDI: 00000000ffffff9c
[Mon Apr 27 11:08:23 2020] RBP: 00005647e340fcd0 R08: 00000000fec08000 R09: 5f48544150564544
[Mon Apr 27 11:08:23 2020] R10: 0000000000000000 R11: 0000000000000246 R12: 00005647e258c63a
[Mon Apr 27 11:08:23 2020] R13: 00000000ffffffff R14: 0000000000000000 R15: 0000000000000001
[Mon Apr 27 11:08:23 2020] Modules linked in: lkh(OE) intel_rapl_msr snd_hda_codec_generic ledtrig_audio snd_hda_intel intel_rapl_common snd_intel_nhlt snd_hda_codec snd_hda_core snd_hwdep snd_pcm joydev input_leds serio_raw snd_timer qemu_fw_cfg snd soundcore mac_hid sch_fq_codel ib_iser rdma_cm iw_cm ib_cm ib_core iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi ip_tables x_tables autofs4 btrfs zstd_compress raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx xor raid6_pq libcrc32c raid1 raid0 multipath linear crct10dif_pclmul crc32_pclmul ghash_clmulni_intel hid_generic qxl ttm drm_kms_helper syscopyarea aesni_intel usbhid sysfillrect sysimgblt virtio_net fb_sys_fops net_failover aes_x86_64 crypto_simd cryptd drm pata_acpi psmouse failover glue_helper hid i2c_piix4 virtio_blk floppy

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions