C# IPv6的Socket编程

作者:Secer 发布时间:July 21, 2016 分类:代码学习

服务端监听代码:

IPAddress dirIP = IPAddress.Parse("fe00:e130:91d4:913b:126c");
IPEndPoint endPoint = new IPEndPoint(dirIP, 55577); 

Socket serverSocket = new Socket(AddressFamily.InterNetworkV6,
                                SocketType.Stream,
                                ProtocolType.Tcp);
try
{
    serverSocket.Bind(endPoint);
    serverSocket.Listen(int.MaxValue);
    StreamReader reader = null;
    StreamWriter writer = null;
    while(true)
    {
        Socket clientSocket = serverSocket.Accpet();
        NetworkStream ntStream = new NetworkStream(clientSocket);
        reader = new StreamReader(ntStream);
        string dataClient = reader.ReadLine();
        Console.WriteLine("Client::"+dataClient);
        if(dataClient == "Quit")
            break;
        writer = new StreamWriter(ntStream);
        string dataServer = "Hello  Clinet,I'm Server!";
        writer.WriteLine(dataServer);
        writer.Flush();
        Console.WriteLine("Server::" + dataServer);
    }
    reader.Close();
    writer.Close();
}
catch(Exception ex)
{
    Console.WriteLine(ex.Message + ex.ToString());
} 

客户端连接代码

IPAddress direction = ("fe00:e130:91d4:913b:126c");
IPEndPoint endPointSrv = new IPEndPoint(direction,55577);
Socket clientSocket = new Socket(AddressFamily.InterNetworkV6,
                                SocketType.Stream,
                                ProtocolType.Tcp);
try
{
    clientSocket.Connect(endPointSrv);
    StreamReader reader = null;
    StreamWriter writer = null;
    NetworkStream ntStream = new NetworkStream(clientSocket);
    writer = new StreamWriter(ntStream);
    string dataClient = "Hello,I'm Client! ";
    writer.WriteLine(dataClient);
    writer.Flush();
    Console.WriteLine("Client 已连接");
    reader = new StreamWriter(ntStream);
    string dataServer = reader.ReadLine();
    Console.WriteLine("Server::" + dataServer);
}
catch(Exception ex)
{
    Console.WriteLine(ex.ToString());
}
reader.Close();
writer.Close(); 

[转]多种针对某亚洲金融机构的恶意软件分析

作者:Secer 发布时间:June 12, 2015 分类:代码学习

source:http://www.cyphort.com/multiple-malwares-used-to-target-an-asian-financial-institution/

0x00 前言


近来, Cyphort Labs已收到多种针对于亚洲某金融机构的恶意软件,由于某进行中的研究,我们将匿名该公司.

来源已经表明,攻击的起始入口为其中一名雇员打开了某收到的鱼叉式钓鱼邮件,攻击涉及到了多种后门和用于窃取信息的木马。一些恶意软件具有反沙盒属性且含有对抗heuristic signatures(一般被反病毒公司使用)的保护.多种恶意软件样本也展示了某种一般性的主题,例如:将自身安装到%ProgramFiles%%UserProfile%文件夹(取决于用户是否有admin特权)中.此外,多数的恶意软件样本是用Borland Delphi编译的,它们带有已加密的字符串和API字符串(被混淆或被分为多个字符串)作为保护以对抗heuristic signatures技术.除了某个样本外,其它样本都没被加壳。

以文件的创建日期为根据,它的出现早于2015年2月,并已持续了三个多月

clip_image001[5]

在该攻击中使用的样本概要

技术分析

clip_image002[4]

clip_image003[4]

0x01 技术分析


GoogleUpdate.exe

今天,流行的恶意软件中,文件的文件结构通常并不像我们看到的那样.为什么?因为在今天,多数AV产品部署了基于启发式的检测技术(检测加壳样本和某些具有非常规文件结构的样本).该恶意软件没被加壳且区段类似于某正常文件.

被加密的字符串只在被使用前解密.恶意软件通常将其API字符串分为多个字符串.这也为了躲避heuristic signatures(检测字符串和可疑APIs).

clip_image004[4]

如果用户有admin特权,则它将其自身副本移动到%Pr0gramFiles%文件夹中.如果不是则不移动 如果具有admin特权:

%ProgramFilesDir%\Windows NT\Accessories\nt\GoogleUpdate.exe

如果不具有admin特权:

%UserProfile%\Applications\GoogleUpdate.exe

它作为某种服务(带有”SENSS”服务名)安装自身.

clip_image005[4]

在检查(它是否成功作为某种服务在运行)之后,检查父进程是否为explorer.exe或iexplore.exe.该dll被加密(通过XOR 0x89作为密钥)

反沙盒

检测Sleep加速功能

为了挫败沙盒,该恶意软件凭借sleeps或loops拖延恶意软件的执行,因为他知道某沙盒系统将会在限制的短时间内执行恶意软件.

通过对比,一旦位于你的系统内,恶意软件将有大量时间来实现它的恶意意图。为了挫败该保护,沙盒系统部署了加速功能, 即如果他们检测到某样本使用某种延迟技术,它将加速该样本的执行.例如,如果它检测到该样本sleeps一分钟那么该系统将其改为sleeps 1秒。不幸的是, 对该恶意软件来说,这种技术已经不起作用了.该恶意软件可通过发布某个sleep以检测到sleep的加速,之后在得到消逝时间的同时检查消逝的时间是否比sleep的时间短

clip_image006[4]

阅读剩余部分...

解决:对 PInvoke 函数的调用导致堆栈不对称问题

作者:Secer 发布时间:October 8, 2014 分类:代码学习

在使用托管代码调用非托管代码时,发生“对PInvoke函数“UseTwiHikVisionDllTest!UseTwiHikVisionDllTest.TwiHikVision::GetFirstPic”的调用导致堆栈不对称。原因可能是托管的PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。”

解决方法:

添加属性: CallingConvention=CallingConvention.Cdecl

如:

[DllImport("AspriseOCR.dll", EntryPoint = "OCRpart", CallingConvention = CallingConvention.Cdecl)]
static extern IntPtr OCRpart(string file, int type, int startX, int startY, int width, int height);

编写自己的Acunetix WVS漏洞脚本详细教程

作者:Secer 发布时间:July 3, 2014 分类:黑客技巧,代码学习,原创文章

AWVS提供了自定义的脚本编程接口,可是网上的资料很少,只有官方的几篇介绍和参考手册,最近研究了一下怎么编写AWVS的漏洞脚本来写一篇简单性的文章,大家有兴趣的可以交流 加入 Ha.Cker.In QQ群讨论

本文以8.0为例,首先呢安装好Acunetix Web Vulnerability Scanner 8(该破解的破解,该付费的付费),然后我们需要WVS公开的小小的SDK,下载地址:http://www.acunetix.com/download/tools/WVSSDK.zip ,下载好了后解压bin目录下的WVSS.exe到WVS安装目录下面,此即为WVS脚本编写工具。另外sdk里还有3个简单的脚本小例子和WVS_SDK_Quick_Introduction.pdf,耐心的可以看看。

下面的截图就是WVS码脚本工具了

编写自己的Acunetix WVS漏洞脚本详细教程

打开WVS数据目录,通常是在C:\Documents and Settings\All Users\Application Data\Acunetix WVS 8\Data\Scripts下,可以看到有10个文件夹,Network、PerFile、PerScheme、PostScan、PerFolder、PerServer、PostCrawl、WebApps、XML。我们先来认识一下:

编写自己的Acunetix WVS漏洞脚本详细教程

Network:此目录下的脚本文件是当扫描器完成了端口扫描模块后执行,这些脚本可以检测TCP端口的开放情况,比如检测FTP的21端口是否开放、是否允许匿名登录;

PerFile:此目录下的脚本是当扫描器爬虫爬到文件后执行,比如你可以检查当前测试文件是否存在备份文件,当前测试文件的内容等;

PerFolder:此目录下的脚本是当扫描器爬虫爬行到目录后执行,比如你可以检测当前测试目录是否存在列目录漏洞等;

PerScheme:此目录下的脚本会对每个URL的 GET、POST结构的参数进行检测,AWVS定义了的参数包括HTTP头、Cookies、GET/POST参数、文件上传(multipart/form-data)……比如你可以检测XSS、SQL注入和其他的应用程序测试;

PerServer:此目录下的脚本只在扫描开始是执行一次,比如你可以检测Web服务器中间件类型;

PostScan:此目录下的脚本只在扫描结束后执行一次,比如你可以检测存储型XSS、存储型SQL注入、存储型文件包含、存储型目录遍历、存储型代码执行、存储型文件篡改、存储型php代码执行等;

XML:漏洞的详细描述文档都在这里。

今天演示的漏洞是 Discuz 7.2的faq.php SQL注入,关于漏洞:https://ha.cker.in/1087.seo

我们就用POC来写漏洞的脚本吧!

检测原理:

根据公开的POC构造出特殊请求,若存在 SQL注入 则构造的SQL语句将会执行成功并在返回到响应内容,构造POC如下:

faq.php?action=grouppermission&gids[99]='&gids[100][0]=)%20and%20(select%201%20from%20(select%20count(*),concat((select%200x4861636B656442795365636572),floor(rand(0)*2))x%20from%20information_schema%20.tables%20group%20by%20x)a)%23

利用截图,存在漏洞会返回“HackedBySecer”字样:

编写自己的Acunetix WVS漏洞脚本详细教程

 

我们需要用WVS的脚本请求此URL并处理返回的内容,以此判断是否存在漏洞。

打开AWVS,Tools -> Vulnerability Editor,右键VulnXMLs节点,选择‘Add Vulnerability’

编写自己的Acunetix WVS漏洞脚本详细教程

新建一个漏洞,VulnXML FILENAME为Discuz7.2FaqSqlinjection,点Add按钮(新建的VulnXML会被保存到XML文件夹下哦)

编写自己的Acunetix WVS漏洞脚本详细教程

接下来登记下该漏洞的相关信息

编写自己的Acunetix WVS漏洞脚本详细教程

编写自己的Acunetix WVS漏洞脚本详细教程

然后进入wvss写脚本,保存为Discuz7.2FaqSqlinjection.script放入PerServer文件夹吧。

测试脚本:

使用AWVS的网站爬虫爬行网站并保存结果,

编写自己的Acunetix WVS漏洞脚本详细教程

这里选择根目录

编写自己的Acunetix WVS漏洞脚本详细教程

点击小三角按钮测试

编写自己的Acunetix WVS漏洞脚本详细教程

编写自己的Acunetix WVS漏洞脚本详细教程

完整的代码如下

编写自己的Acunetix WVS漏洞脚本详细教程

测试成功了,我到WVS里扫描去测试扫描看看~

我们新建的漏洞脚本在这里,Scanning Profiles –》 PerFolder目录下,新建一个扫描模板勾选要测试的脚本并保存,这里保存为“test_HA.CKER.IN”,然后用这个模板扫描目标站测试吧

编写自己的Acunetix WVS漏洞脚本详细教程

选择模板并开始扫描

编写自己的Acunetix WVS漏洞脚本详细教程

扫描完成后,结果如图

编写自己的Acunetix WVS漏洞脚本详细教程

漏洞脚本重复检测了很多次,下次更新修复下这个问题。

本人不才,这次对AWVS自定义脚本编写简单的介绍就到这了,只是做个示例展示给大家,这些API不是很详细我也不是很会写,更多的API等你去挖掘吧!

参考:

http://www.acunetix.com/vulnerability-scanner/scriptingreference/index.html

http://www.acunetix.com/blog/docs/creating-custom-checks-acunetix-web-vulnerability-scanner/