问题标签 [rootkit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
security - 使用 --pkgmgr 选项时的 Debian rkhunter 警告
我有一个使用 rkhunter 来保护 rootkit 的网络服务器。
当我检查时,rkhunter 在根工具包部分没有返回任何警告(所以我想我很好)。但是在执行文件属性检查时会收到很多警告。
我发现每次更新系统(apt-get dist-upgrade)时都可能导致这种情况,因为更新期间某些文件会发生变化。然后 rkhunter 识别出这些变化。
经过进一步研究,我发现选项“--pkgmgr DPKG”应该检查存储库中的最新值。所以理论上(据我所知),它应该在没有警告的情况下返回。
但它不起作用,因为一旦 rkhunter 返回警告,我就会收到一封电子邮件,我想知道如何避免这些警告。
sockets - netstat 可疑的 ssh 套接字
当我在我的服务器上运行 netstat -t 时,我得到以下信息:
-sshd 14369 root 3u IPv4 1317773 0t0 TCP localhost:ssh->82.77.64.139:62334 (ESTABLISHED) -sshd 14494 root 3u IPv4 1319053 0t0 TCP localhost:ssh->218.87.109.151:22536 (ESTABLISHED) -ssh 1319053 0t0 TCP 本地主机:ssh->218.87.109.151:22536(已建立)
输入 w 时没有人出现,但我来自 82.77.64.139。
这是一个rootkit吗?
c - 我能否找到所有正在运行的内核模块,即使它们是隐藏的?
我开始开发内核模块,我想知道所有知道哪些模块正在运行以删除它们的方法(包括它们隐藏的模块)。
例如下面的模块有两行为了隐藏他。(这是典型的rootkit开发技巧)
加载模块时,您可以使用 dmesg、lsmod、modinfo、modprobe、/proc/modules、/sys/module 或 /proc/kallsyms 查看信息
我的问题是是否存在知道(和删除)这个模块的方法?显然, rmmod 不起作用,因为该模块没有出现在 /proc/modules 列表中。
linux - 如何访问/proc文件系统的迭代函数指针
我正在尝试创建一个可用于隐藏进程的简单 linux rootkit。我选择尝试的方法是将指向 "/proc" 的迭代函数的指针替换为指向自定义函数的指针,该指针将隐藏我需要的进程。为此,我必须首先保存一个指向它的原始迭代函数的指针,以便以后可以替换它。'/proc' 文件系统的 iterate 函数可以通过访问 'iterate' 函数指针来访问,该指针是它的 'file_operations' 结构的成员。
我尝试了以下两种方法来访问它,在代码段中可以看到 label_1 和 label_2,每个都测试过,另一个注释掉了。
按照方法 1,我将“/proc”作为文件打开,然后按照文件指针访问它的“struct file_operations”(f_op),然后按照此指针尝试定位“迭代”。但是,虽然我能够成功访问“f_op”结构,但它的“迭代”似乎指向 NULL。以下 dmesg 日志显示了它的输出。
按照方法2,我创建一个新的proc目录条目,然后尝试访问它的父目录(它应该指向'/proc'本身),然后尝试访问它的'struct file_operations'(proc_fops),然后尝试继续“迭代”。但是,使用这种方法我什至无法访问“/proc”目录,因为“proc_root = test_proc->parent;” 似乎返回NULL。这会在随后的代码中导致“内核 NULL 指针取消引用”错误。以下 dmesg 日志显示了它的输出。
现在,我知道 linux 内核中的情况发生了变化,我们不允许在不同的地址写入(例如将迭代指针更改为指向自定义函数),这可以通过使这些页面可写来克服内核,但稍后会在我尝试创建这个 rootkit 时出现。目前我什至无法弄清楚如何阅读原始的“迭代”指针。
所以,我有这些问题: [1] 下面的代码有问题吗?如何解决?[2] 还有其他方法可以访问指向 /proc 的迭代函数的指针吗?
在运行 linux 4.15.7 的 Arch Linux 上测试
windows - 防止文件和文件夹被防病毒程序扫描的想法
作为大学课程的一部分,我最近开始研究 rookits 和 bootkits。我编写了一个非常基本的 rootkit,它允许发现 NTFS 文件系统。
问题是编译后我的防病毒软件(Windows Defender)立即标记并删除编译的调试文件。我知道我可以将整个文件夹添加到 WD 中的排除项,但只是一个兴趣点,我想知道是否有一种方法可以防止 rootkit 开发文件夹/文件被所有(或最高级)防病毒程序扫描而无需必须处理个别案件。
我遇到了几种方法。一种是使用文件夹锁或类似程序在旅途中锁定文件夹。这在某些方面确实有效,但更强大的防病毒软件(如卡巴斯基)仍然可以检测到文件。然后,我编写了一个程序,通过将 MFT 参考编号更改为 12,同时代码已经加载到 VS Studio 中,将 exe 文件转换为 NTFS 文件系统。这可以防止所有杀毒软件检测到文件,但同时断开了文件在 VS Studio 中的加载(Gave me data corruption),所以我觉得这种方法有点太硬核了。
我也经历了更改权限,但不确定它应该有多实用。
简而言之,关于防止文件/文件夹被防病毒软件扫描同时仍然能够被操作系统使用的任何其他想法(仅用于教育目的)?
如果问题不清楚,请道歉,我确实觉得这些话有点混乱。
c - C Linux内核页面干扰以前的变量
我想挂read
在linux内核中以实现显示哪个进程读取/home/xytao/safe
目录中的文件。
但似乎pathname
在获取进程名称后已更改,并且pathname
已被get_filename(process_file)
.
例如,在我打开之后/home/xytao/safe/test
,我得到以下输出:
如何解决这个问题?
c - C Linux内核模块钩子stat隐藏目录
我试图/home/xytao/safe
通过将模块添加到该钩子的内核来隐藏文件夹stat
,但是当我返回-2
(ENOENT,没有这样的文件或目录)时,我仍然可以使用cd /home/xytao/safe
进入该文件夹。
这是我的模块
使用strace bash -c "cd /home/xytao/safe"
,我可以看到返回值已经改变,这意味着这个模块加载正常,但它仍然成功进入文件夹。这是 strace 输出的一部分:
这是否意味着我也需要上钩chdir
?
windows - 挂钩 SSDT 后在将参数传递给 NtWriteFile 之前修改参数
我目前正在做关于 Windows 的 rootkit 的讲座(和学习)。我能够挂钩 NtWriteFile 的 SSDT 条目并在 WinDbg 上显示一条简单的消息,但我现在很好奇在将参数传递给原始函数之前更改参数的最佳(也是最安全)方法是什么。在此示例中,如果缓冲区包含“我的字符串”,我将尝试更改它。我怎样才能安全地交换 Buffer 的内容?
谢谢你。
c - x86系统调用表中的交换函数
我正在尝试重新定义 sys_open 的系统调用并以此跟踪用户行为。我使用 Linux 内核 4.13.0-041300。到目前为止,这是我的代码
我的计划:在将此模块安装到内核之后,sys_open 的每个系统调用都将“重定向”到我的函数replaced_open。这个函数会计算它的调用次数,然后调用原来的 open 函数。
在我的模块的 rmmod 之后,将再次使用原始的 system_call open。
看来,更换工作。所以在insmmod之后我得到了replaced_open+0x0/0x40 [kroot]的结果。这意味着,原来的功能 sys_open 被替换为我的replaced_open 对吗?删除我的模块后,我收到消息 SyS_open+0x0/0x20。
所以这似乎是替换作品。
我的问题是:我没有从我的 replace_open 函数中看到任何打印的消息。此外,计数似乎不起作用。
感觉功能没有被正确替换。
你对我有什么帮助吗?
server - 我服务器的 crontab 中的这个条目有什么作用?
我收到了一堆来自 cron 工作的电子邮件,看起来很奇怪,所以我进去调查。
我在下面发现了一个奇怪的 crontab 条目。
起初我尝试运行:
这显示了大 cron 作业,所以我立即删除了该条目。
我相信 cron 电子邮件现在会停止,但我想知道这个条目在做什么。以及它多久做一次。