APT404-不作恶

在路上,一直在路上!

跨平台快速文件共享 Samba

0x01 关于smaba

1
2
主要用于实现不同系统平台间的文件共享,配置非常简单,轻量,适合用于常规办公内网环境中
linux <==> windows <==> unix

此次演示环境

1
2
CentOS6.9 x86_64	ip:192.168.3.55 samba服务器
CentOS6.9 x86_64 ip:192.168.3.57 用来模拟smb客户端进行访问测试

0x02 samba服务默认所监听的端口

1
2
137/udp,138/udp nmb 进程提供netbios解析,以满足基于 CIFS 协议的共享访问环境
138/tcp,445/tcp smb 进程主要为客户端提供文件共享,打印机服务以及用户权限验证

0x03 使用samba客户端工具 smbclient,其实有些类似于ftp的客户端工具,也是一种交互式的访问

在linux下使用smbclient访问windows中的共享目录

1
2
3
# smbclient -L 192.168.3.23 -U administrator
# smbclient //192.168.3.23/linux_dir -U dcadmin
# mount -t cifs //192.168.3.23/linux_dir /mnt/windows/ -o username=dcadmin 注意,此处要使用cifs协议进行挂载

Read More >>>


DNS 深度理解 [ 一 ]

0x01 首先,我们先来简单回顾下DNS的基本解析流程, 比较简单,如下

1
2
3
4
5
6
7
8
9
10
-> 以客户端浏览器访问 www.rootkit.org 域名为例,首先,它会去检查当前浏览器缓存,如果有,就直接响应,如果没有,就继续往下找
-> 接着,操作系统会去检查自己的host文件,如果从中没找到对应关系,会再到系统dns缓存中查,如果缓存中有,就直接返回该域名所对应的ip
-> 如果缓存中没有,则会向我们事先设置好的dns服务器 [ 一般有两个, 主 & 备 ] 去请求,即所谓的`递归查询`,dns服务器首先会到自身解析数据库中去查
-> 如果dns服务器在自己的解析库中也没找到,它就会自动帮我们向根发送询问请求
-> 此时,根看到要请求的是org的后缀,就会把org所在的ns服务器告诉我们的dns
-> 然后,我们的dns服务器就会去请求org所在的ns服务器
-> 当请求到达org ns服务器时,org一看域名是在rootkit这个域下的,就会把rootkit所在的ns服务器再告诉我们的dns服务器
-> 再然后,我们的dns服务器就会去请求rootkit这个域的ns服务器
-> rootkit这个域的ns服务器一看是要访问www就直接找到了www对应的A记录的ip,并把它丢给我们的dns,上面逐个询问的过程,即 `迭代查询`
-> 最后,我们的dns再把最终解析到的这个ip丢给我们的客户端,然后客户端就直接拿着去访问了,如下,访问google.com时的简易流程图

Read More >>>


不再让 `泄露` 拖你的后腿 [ Subversion篇 ]

0x01 关于 svn

1
2
3
同属C/S架构,对于svn服务端来讲,任何一个文件,在任何时刻的变化,都会被svn详细记录,并自动备份修改之前的结果,方便后续回滚
其实,底层也是靠一个独立的`文件系统 FSFS`在维护,更多内部工作细节,大家可以直接去参考百科说明,此处废话不多讲,我们真奔主题...
...

演示环境,注,此处为独立部署svn服务器,并非配合web服务一起使用

1
2
CentOS6.9_x86_64 ip: 192.168.3.59
win7cn ip: 192.168.3.70

0x02 作为一名入侵者,从svn中你都能发掘到什么宝藏

1
2
3
4
5
6
可能最容易拿到的就是数据库的各种连接账号密码,前提是,目标数据库允许外连,这样你才能更优雅的脱裤或者想办法构造上传webshell
一些邮箱账号密码,如果目标有自己的vpn或者owa之类的入口还是很值得尝试的
直接的后端代码,除了能局部审下代码之外,在注释里面也许还能看到一些关于开发人员的敏感信息
其它的各种敏感配置信息,非常多,这里就不一一细说了
注意,有些信息,确实不能让我们一刀毙敌,但高效的渗透往往是对各类敏感信息的相互配合及深度利用,这非常重要
...

Read More >>>


svn

简述 FTP 入侵与防御 [ Vsftpd ]

0x01 首先,我们先来简单思考下,当你面对一台 ftp 时,到底能做些什么

1
2
3
4
5
6
7
挖0day,抱歉,并不在今天的讨论范畴 ^_^
允许匿名可写,直接上传webshell,一般极小的个人站才有可能,ftp目录即网站目录
允许匿名下载,造成的敏感文件信息泄露
爆破,亦可造成敏感配置泄露
嗅探,搜集各种明文账号密码,然后再拿着这些账号密码,去撞目标的其它入口,或以此进行进一步的内网渗透
提权,linux平台下基本不可能
...

0x02 相对主流的一些ftp工具

1
vsftpd proftpd filezilla ...

0x03 深入理解ftp的主动与被动工作模式

命令连接

1
2
3
在客户端向ftp服务端发起连接请求时,客户端会随机选择本地的某个tcp端口与ftp服务端的21端口进行连接
这中间会进行一系列的身份验证过程,待验证通过后,客户端与ftp服务端即会成功建立 `命令连接`
所谓的 `命令传输连接` 也就是说,仅仅只会用这个连接来传输命令本身

主动模式

1
2
3
4
在 `命令连接` 建立成功后,客户端可能还需要进行一系列的数据传输动作,如,上传,下载文件...
此时,客户端会先在本地另启一个端口监听等待连接,并利用先前与ftp客户端建立好的`命令连接`通道,告诉ftp服务端客户端所监听的端口
而后,ftp服务端会利用自身的20端口和刚才ftp客户端所告知的端口进行数据连接,随后就开始利用此连接来进行各类数据传输
注意,此时`数据连接`在建立的过程中,是ftp服务端的20端口主动连接FTP客户端的随机端口的,也就是我们所说的`主动模式`

Read More >>>


如何将你的 Apache 把控的'密不透风'

0x01 为防止配置或端口冲突,在装之前,你需要先仔细检查当前系统有没有装apache,如果有先把apache服务停掉,然后卸载apache,等会儿用源码重新编译安装

1
2
# rpm -qa httpd
# rpm -e --nodeps * 强制卸载apache

演示环境

1
2
CentOS6.8 x86_64    最小化,带基础库安装 eth0 : 192.168.3.45 eth1 : 192.168.4.16 eth2 : 192.168.5.16
httpd-2.2.34.tar.gz apache官方提供的源码包

0x02 下载apache源码包,这里暂时选择2.2.x系列的最新版,不建议再用比这个还老的版本了,漏洞比较多

1
2
# wget http://apache.website-solution.net/httpd/httpd-2.2.34.tar.gz
# tar xf httpd-2.2.34.tar.gz && cd httpd-2.2.34

0x03 直接到源码中去改掉apache的详细版本信息,跟部署nginx一样,尽可能地扰乱入侵者的判断,这里就把它模拟成IIS 7.5,实际系统应为win server 2008r2

1
# vi include/ap_release.h

Read More >>>


Php-fpm.conf & php.ini 安全优化实践

0x01 关于 php

1
2
3
4
5
其历史相对已经比较久远了,这里也就不废话了,属弱类型中一种解释型语言
除了web开发以及写些简单的exp,暂未发现其它牛逼用途,暂以中小型web站点开发为主
另外,低版本的php自身漏洞就比较多,建议,从现在开始就在新项目中使用php 5.6.x 往后的版本
好在官方维护的一直比较勤奋,主次版本都迭代的比较快,最新版已经到7.2.0
哼哼……是,'最好的语言'... :)

0x02 此次演示环境

1
2
CentOS6.8 x86_64   最小化,带基础库安装 	eth0: 192.168.3.42 eth1: 192.168.4.14  eth2: 192.168.5.14
php-5.6.32.tar.gz 官方提供的源码包

0x03 下载 php-5.6.32.tar.gz,并安装好php所需的各种依赖库

1
2
3
4
5
6
7
8
9
# yum install epel-release -y
# yum install -y zlib-devel libxml2-devel freetype-devel
# yum install -y libjpeg-devel libpng-devel gd-devel curl-devel libxslt-devel
# yum install openssl openssl-devel libmcrypt libmcrypt-devel mcrypt mhash mhash-devel -y
# tar xf libiconv-1.15.tar.gz
# cd libiconv-1.15
# ./configure --prefix=/usr/local/libiconv-1.15 && make && make install
# ln -s /usr/local/libiconv-1.15/ /usr/local/libiconv
# ll /usr/local/libiconv/

Read More >>>


给自己一个更安全的 Mysql

0x01 在进行真正的 mysql 部署之前,我们不妨先来大致了解下,在实际入侵过程中,仅仅利用mysql,我们到底能干些什么,了解了这些最基本的点之后,我们再进行针对性防御:

1
2
3
4
普通用户权限下的 '增删改查',即 常规sql注入,俗称'脱裤'
普通用户file权限下的 '文件读写',可尝试读取各类敏感配置,如各类账号或者尝试直接往站点目录中写webshell
root用户权限下的 '读写文件' , '系统命令执行'... 可读写是因为root本身就有file权限,另外,如果直接以root身份运行mysql服务,亦可实现'提权'的效果
针对 '数据库连接' 的'DDOS',单用户大批量数据库连接可能会导致mysql无法再提供服务

0x02 演示环境:

1
2
CentOS6.8 x86_64 最小化,只带基础库安装  eth0: 192.168.3.42 eth1: 192.168.4.14  eth2: 192.168.5.14
mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz 此次mysql就不再手工编译了,时间比较长,直接用mysql官方提供好的二进制包来做演示

0x03 下载,解压 mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz

1
2
3
4
# tar xf mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz
# mv mysql-5.6.27-linux-glibc2.5-x86_64 /usr/local/
# ln -s /usr/local/mysql-5.6.27-linux-glibc2.5-x86_64/ /usr/local/mysql
# ls -l /usr/local/mysql/

0x04 开始初始化mysql

务必以一个伪用户身份来运行mysql服务,防止别人利用mysql进行提权,后面还会再细说,另外,web服务和数据库服务严禁用同一个系统用户,这样做主要是为了防止入侵者直接通过sql语句往网站目录中写webshell

1
# useradd -s /sbin/nologin -M mysql

Read More >>>


从 0 开始构建一个 "固若金汤" 的Nginx

0x01 关于 nginx

1
2
3
4
5
配置灵活,简单,运行时占用系统资源较少,功能模块繁多,可扩展性极强,基于 C ,整个工具大小1M左右
支持高并发,仅限于全部为纯静态文件的情况下,因为最终还要取决于后端 [ 脚本和数据库 ] 的实际处理速度
默认 nginx 会自动选择最佳的网络I/O模型,和nginx不同的是,apache默认就会使用select模型,效率较低
上面这些话的意思也就是说,你的C要牛逼到一定的程度,不然,想做深度二次开发基本是扯淡,真心挺佩服毛子的
更多说明,请直接参考官方文档...

0x02 正确理解 linux 对文件,目录,[ 读 写 执行 ] 权限的真正含义,这东西不能靠干说,因为根本理解不扎实,大家可以自己在系统中创建两个普通用户,不停地切换目录文件权限,以深入仔细体会,后面网站目录权限设置要用到这些基础,如果连这些都搞不清,想灵活应用就难了,耐心点,等透彻理解之后,你就会发现真TM简单

目录 读[r / 4] 写[w / 2] 执行[x / 1]

1
2
3
读:   ls , dir ... 			表示可查看该目录下的文件列表
写: rm , mv, cp, mkdir ,touch ... 表示可在该目录下创建,删除,修改文件或者子目录,不过在这之前,一定要先有执行权限,不然进都进不去,又怎么写呢
执行: cd ... 表示可进入该目录

文件 读[r / 4] 写[w / 2] 执行[x / 1]

1
2
3
读:	cat , tac , more , less ,head , tail ... 表示可查看该文件中的内容
写: vi , nano , echo ... 只表示可对文件中的 内容 进行增删改,删除文件还要取决于当前用户对该文件所在目录是否有写权限
执行: 可执行文件,shell脚本... 在linux中任何文件都可以有执行权限,但只有可执行文件和脚本才能真正执行

Read More >>>


Lsyncd + Rsync 实时同步海量小文件



0x01 关于lsyncd

1
2
3
inotify的优秀替代品,基于lua,不过,它也依然使用 linux 2.6.13以后内核的inotify触发机制
配置简单灵活,在同步海量小文件时,性能表现优异,废话不多讲,咱们直奔主题
...

环境准备:

1
2
RsyncServer	ip: 192.168.5.4
RsyncClient26 ip: 192.168.5.7

0x02 在需要进行实时同步的 rsync 客户端机器上[ 这里是RsyncClient26 ]编译安装lsyncd,如下

1
2
3
4
5
6
7
8
# yum install lua lua-devel asciidoc cmake -y
# wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/lsyncd/lsyncd-2.1.5.tar.gz
# tar xf lsyncd-2.1.5.tar.gz
# cd lsyncd-2.1.5/
# ./configure --prefix=/usr/local/lsyncd-2.1.5 && make && make install
# echo $? && cd
# ln -s /usr/local/lsyncd-2.1.5/ /usr/local/lsyncd/
# cd /usr/local/lsyncd/bin/ && ./lsyncd

Read More >>>


纯图形化实时流量分析 [ Etherape ]

0x01 关于 etherape:

1
2
3
4
5
一款纯图形化的网络流量分析工具,既是图形界面,所以系统中务必要有各类图形库支持才行
很多数时候,我们可能只是想简单的看看数据流向,了解总体数据流向或某单个网络节点状况,并不想关心数据包里面到底是什么东西
此时,etherape 则无疑是个比较不错的选择,另外,它对各个协议的支持相对还算比较到位
当然,缺点也是有的,毕竟是实时分析,如果流量瞬间激增,很容易把程序卡崩掉[不知道是有点儿溢出,还是io跟不上],也正常,毕竟只是个小工具肯定没商业工具那么完善
...

0x02 环境:

1
2
3
4
kali 			ip: 192.168.3.30
centos6.9_x64 ip: 192.168.3.16 [eth1] 192.168.3.19 [eth0]
win2008R2cn ip: 192.178.3.23
win7cn ip: 192.168.3.2

Read More >>>