海运的博客

Linux下模拟ARP欺骗代理攻击实验

发布时间:August 6, 2012 // 分类:网络安全 // No Comments

有攻才有防,本次测试下ARP欺骗攻击,对防止ARP攻击有更好的了解,请勿用于非法用途。
测试网络环境如下:

路由网关IP:192.168.1.1 MAC:00:1F:A3:65:55:8D  
客户机A IP:192.168.1.3 MAC:00:0c:29:e7:cc:3b 
客户机B IP:192.168.1.5 MAC: 00:0c:29:c6:f8:da

客户机B用作ARP攻击欺骗,发起ARP包欺骗客户机A网关MAC为客户机B网卡MAC:

arpspoof -i eth0 -t 192.168.1.3 192.168.1.1
0:c:29:c6:f8:da 0:c:29:e7:cc:3b 0806 42: arp reply 192.168.1.1 is-at 0:c:29:c6:f8:da
0:c:29:c6:f8:da 0:c:29:e7:cc:3b 0806 42: arp reply 192.168.1.1 is-at 0:c:29:c6:f8:da

客户机B欺骗网关客户机A MAC地址为客户机B MAC:

arpspoof -i eth0 -t 192.168.1.1 192.168.1.3
0:c:29:c6:f8:da 0:1f:a3:65:55:8d 0806 42: arp reply 192.168.1.3 is-at 0:c:29:c6:f8:da
0:c:29:c6:f8:da 0:1f:a3:65:55:8d 0806 42: arp reply 192.168.1.3 is-at 0:c:29:c6:f8:da

或:

ettercap -T -M arp:remote /192.168.1.1/ /192.168.1.3/

客户机B开启数据包转发功能:

echo 1 > /proc/sys/net/ipv4/ip_forward

网关tracert客户机A:

traceroute 192.168.1.3
traceroute to 192.168.1.3 (192.168.1.3), 30 hops max, 38 byte packets
 1  192.168.1.5 (192.168.1.5)  1.307 ms  1.750 ms  1.241 ms
 2  192.168.1.3 (192.168.1.3)  2.358 ms !C  7.161 ms !C  1.876 ms !C

客户机A tracert网关:

tracert 192.168.1.1
traceroute to 192.168.1.1 (192.168.1.1), 30 hops max, 40 byte packets
 1  192.168.1.5 (192.168.1.5)  2.111 ms  1.962 ms  1.903 ms
 2  192.168.1.1 (192.168.1.1)  1.863 ms  1.753 ms  5.969 ms

看到了吧,真是吭爹呀,都走客户机B代理了。。。。

Linux下用arping和nmap查找arp攻击源

发布时间:August 6, 2012 // 分类:网络安全 // No Comments

查看当前缓存ARP表:

arp -a

用arping查看当前网关MAC:

arping 192.168.1.1
ARPING 192.168.1.1 from 192.168.1.3 eth0
Unicast reply from 192.168.1.1 [00:1F:A3:65:55:8D]  0.958ms
Unicast reply from 192.168.1.1 [00:1F:A3:65:55:8D]  0.947ms
Unicast reply from 192.168.1.1 [00:1F:A3:65:55:8D]  0.942ms
#一般回应在1ms左右,如果远大于此数据代表被arp欺骗网关代理了

统计当前网段所有主机MAC表,然后根据缓存arp网关MAC和arping网关MAC查看哪个IP异常。

#https://www.haiyun.me
#!/bin/bash
for i in `seq 254` ; do
        arping -c 2 192.168.1.$i|grep ^Unicast|awk '{print $4,$5}'
    done

Windows下可使用nbtscan扫描当前网段信息:

nbtscan -f 192.168.1.0/24

或使用NMAP获取当前网段所有主机MAC:

nmap -sP 192.168.1.0/24

同时也可使用tracert跟踪查看网关IP是否正确:

tracert www.haiyun.me

Linux和Windows系统绑定网关IP ARP

发布时间:August 5, 2012 // 分类:网络安全 // No Comments

Linux下绑定ARP:

arp -s 192.168.1.1 00:1f:a3:65:55:8d

Windows XP/2003绑定:

arp -s 192.168.1.1 00-1f-a3-65-55-8d

Windows 7/2008绑定:

netsh i i show in #查看要绑定网卡的IDX
netsh -c "i i" add neighbors 11 192.168.1.1 00-1f-a3-65-55-8d

Linux下使用GPG加密文件保安全

发布时间:July 3, 2012 // 分类:网络安全 // No Comments

GPG是免费的加密和数字签名软件,Linux下自带,可以对文件、电子邮件进行加密,确保文件完整、安全性。
GPG分私钥和公钥,公钥可对外公开用以验证私钥加密的文件,公钥加密的文件同样可使用私钥验证完整性。
生成gpg密钥和公钥:

gpg --gen-key --expert 
#无密码生成
#--expert可选择ecc
gpg --pinentry-mode loopback --passphrase '' --gen-key 
#自定义生成,可选择加密算法和过期时间
gpg --pinentry-mode loopback --passphrase '' --full-gen-key 

用快捷方式生成,当指定加密算法时只生成主证书,上面生成方法默认生成主证书和加密证书:

gpg --pinentry-mode loopback --passphrase '' --quick-generate-key "haiyun (Comment) <admin@haiyun.me>" rsa4096 default never

列出当前证书:

#公钥
gpg --list-keys --keyid-format LONG
#私钥
gpg --list-secret-keys --keyid-format long
#--keyid-format long 显示子证书的指纹或使用--with-subkey-fingerprint
#--list-keys可简写为-k
#--list-secret-keys为-K

添加子证书,加密、验证、签名,5998C993622730CC831A2A7023584E37147F6CBE为刚生成的主证书指纹。

gpg --batch --passphrase '' --quick-add-key 5998C993622730CC831A2A7023584E37147F6CBE rsa4096 encr never
gpg --batch --passphrase '' --quick-add-key 5998C993622730CC831A2A7023584E37147F6CBE rsa4096 auth never
gpg --batch --passphrase '' --quick-add-key 5998C993622730CC831A2A7023584E37147F6CBE rsa4096 sign never

将公钥上传到公开key服务器,在其它机器上可导入,默认服务器keys.openpgp.org过滤用户名和邮箱,使用其它keyserver。

#上传到服务器,当本地证书改变时重新提交
gpg --keyserver keyserver.ubuntu.com --send-keys 5998C993622730CC831A2A7023584E37147F6CBE
gpg --keyserver keyserver.ubuntu.com --search-keys 5998C993622730CC831A2A7023584E37147F6CBE
gpg --keyserver keyserver.ubuntu.com --recv-keys 5998C993622730CC831A2A7023584E37147F6CBE
#重新提交后其它机器更新key
gpg --keyserver keyserver.ubuntu.com --refresh-keys 5998C993622730CC831A2A7023584E37147F6CBE
#其它机器使用公钥加密始终信任key
gpg -e -r admin@haiyun.me --trust-model always file

导出密钥:

gpg --export -a admin@haiyun.me > gpg.pub #导出公钥
gpg --export-secret-keys -a admin@haiyun.me > gpg.pri #导出私钥

吊销证书:

#生成吊销证书
gpg -o 5998C993622730CC831A2A7023584E37147F6CBE.rev --gen-revoke admin@haiyun.me
#导入后证书被吊销,如有上传的服务器需重新send-keys
gpg --import 5998C993622730CC831A2A7023584E37147F6CBE.rev

吊销子密钥证书:

gpg --edit-key haiyun
  
gpg > list
gpg > key AA8C0103E7B6CB52
gpg > revkey
gpg > save

加密和签名文件:

gpg -s -u admin@haiyun.me file #使用指定公钥签名文件,输出二进制原文和签名到file.gpg,可使用-o指定输出文件
gpg -s -u admin@haiyun.me -a file #将二进制原文和签名输出为ASCII格式到file.asc
gpg -s -u admin@haiyun.me --clearsign file #输出明文原文和签名到file.asc
gpg -e -r admin@haiyun.me file #加密文件
gpg -s -u admin@haiyun.me -e -r admin@haiyun.me file #加密并签名,保存为一个文件
echo 'haiyun' | gpg -e -r admin@haiyun.me -s -u admin@haiyun.me -a #加密并签名文本消息
gpg -a -b -s -u admin@haiyun.me file.gpg #使用指定公钥签名文件且证书单独保存为file.gpg.asc

解密文件:

gpg -d file

如使用数字签名可检验文件完整性:

gpg --verify file.asc

注:签名和加密区别,关心数据完整性使用数字签名,关心数据保密性使用加密,加密和签名可同时进行。

gpg aes非对称加密文件:

#查看支持的加密和hash算法
gpg --version
#加密文件
gpg -c --pinentry-mode loopback --passphrase 123456 --cipher-algo AES256 -o file.gpg file 
#解密文件
gpg -d --pinentry-mode loopback --passphrase 123456 --cipher-algo AES256 -o file file.gpg
#--pinentry-mode loopback也可替换为--batch,相比batch提示交互操作
#类似于openssl pbkdf2
#--s2k-mode=3 --s2k-digest-algo=SHA256 --s2k-count=10000 --s2k-cipher-algo=AES256 
#--compress-algo 2 #0不压缩 1 zip 2 zlib 3 bzip2

查看加密文件详情:

gpg --list-packets --pinentry-mode loopback --passphrase 1234 file.gpg 

https://www.gnupg.org/documentation/manuals/gnupg/OpenPGP-Key-Management.html
https://segmentfault.com/a/1190000041007717
https://zhuanlan.zhihu.com/p/137801979
https://www.ietf.org/rfc/rfc4880.txt
https://security.stackexchange.com/questions/15632/what-is-purpose-of-s2k-gnupg-options

用knockd远程管理iptables防火墙SSH端口

发布时间:June 28, 2012 // 分类:网络安全 // No Comments

之前有介绍Iptables模块recent通过暗语来开启SSH端口,knockd也可实现此功能。
knockd监听3个自定义端口,如果收到客户端请求符合要求即执行设置的指令,让iptables开启SSH端口允许客户IP连接。
安装所需组件,不然编译会提示错误。

yum install libpcap-devel

knockd源码编译安装:

wget http://www.zeroflux.org/proj/knock/files/knock-0.5.tar.gz
tar zxvf knock-0.5.tar.gz 
cd knock-0.5
./configure 
make
make install

下载knock rpm包安装:

wget http://pkgs.repoforge.org/knock/knock-0.5-1.el5.rf.i386.rpm
rpm -ivh knock-0.5-1.el5.rf.i386.rpm 

knockd配置:

cat /etc/knockd.conf
  [options]
        logfile = /var/log/knockd.log #日志记录目录
        interface = eth0  #监听网卡

  [opencloseSSH]
        sequence      = 6000:udp,5000:tcp,4000:udp #knock侦听端口协议
        seq_timeout   = 15 #单位时间内连续触发上面的端口规则
        tcpflags      = syn #封包标志,syn/ack/fin
        start_command = iptables -I INPUT -s %IP% -p tcp --syn --dport 22 -j ACCEPT
        #如果触发规则执行的iptables操作
        cmd_timeout   = 10 #规则触发后未连接超时时间        
        stop_command  = iptables -D INPUT -s %IP% -p tcp --syn --dport 22 -j ACCEPT
        #如超时未连接或断开连接执行iptalbes操作

knock init启动管理脚本:

#!/bin/sh
# chkconfig: - 99 00
# description: Start and stop knockd

# Check that config file exist
[ -f /etc/knockd.conf ] || exit 0

# Source function library
. /etc/rc.d/init.d/functions

# Source networking configuration
. /etc/sysconfig/network

# Check that networking is up
[ "$NETWORKING" = "no" ] && exit 0

start() {
  echo "Starting knockd ..."
  /usr/local/sbin/knockd -d
  }

stop() {
  echo "Shutting down knockd ..."
  pkill knockd
  }

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop
    start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    ;;
esac

exit 0

客户端连接SSH需先使用telnet依次连接knock设定端口,或使用knock客户端连接。

knock -v www.haiyun.me 6000:udp 5000:tcp 4000:udp

查看knock日志:

cat /var/log/knockd.log 
[2012-08-31 10:41] 192.168.1.16: opencloseSSH: Stage 1
[2012-08-31 10:41] 192.168.1.16: opencloseSSH: Stage 2
[2012-08-31 10:41] 192.168.1.16: opencloseSSH: Stage 3
[2012-08-31 10:41] 192.168.1.16: opencloseSSH: OPEN SESAME
[2012-08-31 10:41] opencloseSSH: running command: iptables -I INPUT -s 192.168.1.16 -p tcp --syn --dport 22 -j ACCEPT

[2012-08-31 10:41] 192.168.1.16: opencloseSSH: command timeout
[2012-08-31 10:41] opencloseSSH: running command: iptables -D INPUT -s 192.168.1.16 -p tcp --syn --dport 22 -j ACCEPT

备注:如果网络较差,且同时使用tcp和udp进行验证可能会导致数据包到达顺序不一致或某个包丢失导致验证失败。

分类
最新文章
最近回复
  • opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
  • liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
  • 海运: 不好意思,没有。
  • zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
  • 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...