RootKit端口深层隐藏
RootKit端口深层隐藏
用户态下隐藏端口信息,就是把/proc/下端口相关信息过滤掉。具体来说,看下面一张表格:
可以看一下net/ipv4/tcp.c和net/ipv4/tcp_ipv4.c的开头注释,列举了 TCP/IP 协议栈的开发者们。
下面我们以表格第一行的IPv4版本TCP为例,做端口隐藏实验。
首先看一下cat /proc/net/tcp
:
我们再看一下tcp4_seq_show:
// net/ipv4/tcp_ipv4.c
#define TMPSZ 150
static int tcp4_seq_show(struct seq_file *seq, void *v)
{
struct tcp_iter_state *st;
struct sock *sk = v;
seq_setwidth(seq, TMPSZ - 1);
if (v == SEQ_START_TOKEN) {
seq_puts(seq, " sl local_address rem_address st tx_queue "
"rx_queue tr tm->when retrnsmt uid timeout "
"inode");
goto out;
}
st = seq->private;
if (sk->sk_state == TCP_TIME_WAIT)
get_timewait4_sock(v, seq, st->num);
else if (sk->sk_state == TCP_NEW_SYN_RECV)
get_openreq4(v, seq, st->num);
else
get_tcp4_sock(v, seq, st->num);
out:
seq_pad(seq, '\n');
return 0;
}
// fs/seq_file.c
void seq_puts(struct seq_file *m, const char *s)
{
int len = strlen(s);
if (m->count + len >= m->size) {
seq_set_overflow(m);
return;
}
memcpy(m->buf + m->count, s, len);
m->count += len;
}
还没有评论,来说两句吧...