Awesome
iproxy
HTTP/HTTPS proxy server by golang [high performance version]
采集HTTP/HTTPS的代理流量,存储到数据库,为被动扫描提供攻击面信息
快速上手
$ ./iproxy_darwin_amd64 -t 1024
2020/07/23 13:42:07 Server running: 0.0.0.0:8080 , task_id: 1024
编辑 config.json
// database 数据库连接信息
// datatable 数据存储的表
// ignoreHost 排除特定主机,不存储到数据库,支持子域名 mail.google.com .weixin.qq.com
// ignoreTypes 排除特定资源类型,参考各httpd服务的配置
// mime-types
// https://www.nginx.com/resources/wiki/start/topics/examples/full/#mime-types
{
"database": "root:123456@tcp(localhost:3306)/test",
"datatable": "capture",
}
启动服务
-t 可以为每一个扫描任务指定一个id,来区分不同的任务
./iproxy_darwin_amd64 -p 8080 -t 1024
./iproxy_darwin_amd64 -h
Usage of ./iproxy_darwin_amd64:
-c string
config file name (default "config.json")
-l string
proxy server bind local IP (default "0.0.0.0")
-p string
proxy server port (default "8080")
-t int
inspector task (task_id)
-v should every proxy request be logged to stdout
HTTPS 流量记录
需要导入根证书到系统,并设置信任 ca.pem
安装mysql环境
docker pull mysql
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
初始化数据库
mysql -h127.0.0.1 -uroot -p
mysql> CREATE DATABASE IF NOT EXISTS test;
mysql> use test;
mysql> source capture.sql
如果不想使用source初始化数据表,可以直接复制SQL在mysql里面执行;
CREATE TABLE IF NOT EXISTS `capture` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`task_id` int DEFAULT '0',
`method` varchar(8) DEFAULT 'GET',
`scheme` varchar(16) DEFAULT 'http',
`host` varchar(220) DEFAULT NULL,
`uri` text,
`path` text,
`status_code` int DEFAULT '0',
`content_type` varchar(128) DEFAULT NULL,
`header` text,
`content` mediumblob,
`request_header` text,
`request_body` mediumblob,
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0;