文章851
标签121
分类10

Kali Linux默认账号密码

在 Kali Linux 中,默认的用户名和密码取决于您使用的版本。以下是一些常见情况:
2024-11-01T06:50:51.png

  1. Kali Linux 2020.4 及以前版本

    • 默认用户名:root
    • 默认密码:toor
  2. Kali Linux 2020.4 及以后版本

    • 默认用户名:kali
    • 默认密码:kali

如果您在安装时自定义了用户名和密码,请使用您设置的凭据进行登录。

注意事项

  • 如果您忘记了密码,可以通过单用户模式重置密码,具体步骤取决于您的安装方式。
  • 建议在安装后立即更改默认密码,以提高系统安全性。

密码学基本概念

本文讲述密码学中的几个常见的概念:加密、解密、签名、验签、摘要、编码、公钥、私钥。

编码

对信息进行编码,没有信息损失,任何人都能通过编码方式对信息进行解码。例如 ASCII 码,base64 编码。

例如下面是 ASCII 编码表:

2024-10-17T08:24:39.png

摘要

对信息计算摘要值,有信息损失,例如 md5 摘要,sha1 摘要。
2024-10-17T08:25:09.png

加密

对信息进行加密使其无法被监听者获知内容,没有信息损失。例如:AES、DES、RSA。

2024-10-17T08:25:37.png

公钥

公钥就是两个数字,e(e = 65537,e > 1 且与 ø(n) 互质,ø(n) 为欧拉函数),n(n = p * q,p、q 为质数),用于验签或加密。一般不说用公钥解密,说用公钥验签。例如 RSA 公钥。

私钥

私钥就是两个数字,d(e 对于 ø(n) 的逆元,ø(n) 为欧拉函数)、n(n = p * q,p、q 为质数),用于签名或解密。一般不说用私钥加密,说用私钥签名。

公钥与私钥的关系

在数学上没有区别,都是一对数字,取决于将哪一组数字公开。公钥加密的内容要使用私钥解密;私钥加密的内容要使用公钥解密。私钥要自己保护好,不得泄露;公钥可以公开在互联网上,任何人都可以用它来加密信息,当然加密内容只有私钥能够解出来。

2024-10-17T08:26:19.png

签名

计算信息的摘要值,用私钥对摘要值进行签名,生成一个签名值,签名算法有 RS256 等。

2024-10-17T08:26:47.png

验签

利用公钥对签名信息进行验证。拿到一段信息和它的签名值,需要先计算信息摘要值,用公钥解密签名值,和计算的信息摘要值进行比对。

2024-10-17T08:27:08.png

原文地址 : https://docs.authing.cn/v2/concepts/cryptography.html

盘点一下在渗透测试中可能用到的网络搜索引擎

▼ FoFa搜索引擎

FOFA是白帽汇推出的一款网络空间搜索引擎,它通过进行网络空间测绘,能够帮助研究人员或者企业迅速进行网络资产匹配,例如进行漏洞影响范围分析、应用分布统计、应用流行度排名统计等。

2024-10-15T02:03:12.png

搜索语法

|-|-|
|title=”abc”| 从标题中搜索abc。例:标题中有北京的网站。|
|header=”abc” |从http头中搜索abc。例:jboss服务器。|
|body=”abc” |从html正文中搜索abc。例:正文包含Hacked by。|
|domain=”qq.com”| 搜索根域名带有qq.com的网站。例: 根域名是qq.com的网站。|
|host=”.gov.cn” |从url中搜索.gov.cn,注意搜索要用host作为名称。|
|port=”443”| 查找对应443端口的资产。例: 查找对应443端口的资产。|
|ip=”1.1.1.1” |从ip中搜索包含1.1.1.1的网站,注意搜索要用ip作为名称。|
|protocol=”https” |搜索制定协议类型(在开启端口扫描的情况下有效)。例: 查询https协议资产。|
|city=”Beijing” |搜索指定城市的资产。例: 搜索指定城市的资产。|
|region=”Zhejiang” |搜索指定行政区的资产。例: 搜索指定行政区的资产。|
|country=”CN”| 搜索指定国家(编码)的资产。例: 搜索指定国家(编码)的资产。|
|cert=”google.com” |搜索证书(https或者imaps等)中带有google.com的资产。|

高级搜索:

title=”powered by” && title!=discuz
title!=”powered by” && body=discuz
( body=”content=\”WordPress” || (header=”X-Pingback” && header=”/xmlrpc.php” && body=”/wp-includes/“) ) && host=”gov.cn”

▼ Censys搜索引擎

Censys2013 年在密歇根州安娜堡成立,为组织提供世界上最全面的全球网络和设备实时视图。 FireEye、谷歌、北约、瑞士武装部队、美国国土安全部和超过 10% 的财富 500 强企业都依赖该公司的全互联网持续可见性平台来发现和预防网络安全威胁。Censys 被 CB Insights 评为 2019 年网络捍卫者,表彰其开创性的技术具有改变网络安全行业的潜力。

2024-10-15T02:04:07.png

默认情况下censys支持全文检索。

|-|-|
|23.0.0.0/8 or 8.8.8.0/24 | 可以使用and or not|
|80.http.get.status_code: 200|  指定状态|
|80.http.get.status_code:[200 TO 300]|  200-300之间的状态码|
|location.country_code: DE|  国家|
|protocols: (“23/telnet” or “21/ftp”)|  协议|
|tags: scada|  标签|
|80.http.get.headers.server:nginx|  服务器类型版本|
|autonomous_system.description: University|  系统描述|

▼ 钟馗之眼

ZoomEye(“钟馗之眼”)——全球网络空间测绘的领导者,是知道创宇旗下404实验室驱动打造的中国第一款,同时也是全球著名的网络空间搜索引擎。通过分布在全球的大量测绘节点,针对全球范围内的IPv4、IPv6地址库及网站域名库进行24小时不间断探测、识别,根据对多个服务端口协议进行测绘,最终实现对整体或局部地区的网络空间画像。免费用户一个月可以下载1w条结果,想多下载数据可以多撸几个账号白嫖:

2024-10-15T02:05:01.png

搜索语法

|-|-|
|app:nginx  |组件名|
|ver:1.0 | 版本|
|os:windows|  操作系统|
|country:”China” | 国家|
|city:”hangzhou” | 城市|
|port:80 | 端口|
|hostname:google | 主机名|
|site:thief.one | 网站域名|
|desc:nmask | 描述|
|keywords:nmask’blog | 关键词|
|service:ftp | 服务类型|
|ip:8.8.8.8|  ip地址|
|cidr:8.8.8.8/24|  ip地址段|

Shodan搜索引擎

Shodan是一个搜索接入互联网的设备的搜索引擎,2009年由约翰·马瑟利发布。学生会员可以每个月下载1w条数据,黑五可能会有优惠价格。

2024-10-15T02:06:34.png

搜索语法

|-|-|
|hostname|  搜索指定的主机或域名,例如 hostname:”google”|
|port|  搜索指定的端口或服务,例如 port:”21”|
|country|  搜索指定的国家,例如 country:”CN”|
|city|  搜索指定的城市,例如 city:”Hefei”|
|org|  搜索指定的组织或公司,例如 org:”google”|
|isp|  搜索指定的ISP供应商,例如 isp:”China Telecom”|
|product|  搜索指定的操作系统/软件/平台,例如 product:”Apache httpd”|
|version|  搜索指定的软件版本,例如 version:”1.6.2”|
|geo|  搜索指定的地理位置,例如 geo:”31.8639, 117.2808”|
|before/after|  搜索指定收录时间前后的数据,格式为dd-mm-yy,例如 before:”11-11-15”|
|net|  搜索指定的IP地址或子网,例如 net:”210.45.240.0/24”|

360quake

Quake是360网络安全响应中心(360-CERT)自主研发设计的全网空间测绘系统,能够对全球全量IPv4IPv6地址进行持续性测绘工作。通过结合人工智能与机器学习的方式,具备全网资产设备精准发现、精准识别能力。同时系统利用强大、灵活的底层核心扫描引擎,将丰富的安全漏洞数据库、安全攻防知识库与海量资产识别数据相结合,从而达到对全球网络空间安全风险感知的目的。终身会员每个月可以下载5万条数据,直接excel导出。

2024-10-15T02:27:42.png

全球鹰(hunter)

全球鹰是奇安信的一款产品。通过网络空间测绘技术,全球鹰测绘平台可以提供IP、域名、开放端口、应用/组件、所属企业等关键安全信息,同时结合攻防场景绘制了资产画像与IP画像,实现互联网资产的可查、可定位、操作可识别的检索,助力企业日常的安全运营工作,例如未知资产发现、风险识别、漏洞修复等。目前全球鹰网络空间测绘平台已有3亿独立IP,资产(剔除历史重复数据)总数超过20亿,已实现全端口覆盖。在全球我们已覆盖了261个国家,96% ASN域。国内web资产最快4天更新,最慢7天更新。

2024-10-15T02:28:42.png

谛听

谛听(ditecting)网络空间工控设备搜索引擎,取谛听辨识万物之意,意在搜寻暴露在互联网上的工业控制系统联网设备, 帮助安全厂家维护工控系统安全、循迹恶意企图人士。通过谛听,你可以定位工控设备位置,捕捉开放端口,发现安全漏洞。通过谛听,你可以直观感受全球工控安全形势,关注你身边的工控系统安全。谛听旨在为工控安全提供开放自由的研究环境,善用谛听,关注工控系统安全,促进工控安全发展。

2024-10-15T02:30:25.png

知风

“知风”提出了一种针对互联网联网工控资产IP与企业相关联的一种自动化与快速分析的专利方法,该方法又称IP核查,我们主要利用各种网络空间搜索引擎公开的数据渠道,通过自动化的手段整合各种网络空间搜索引擎联网工控资产数据等多维度信息,来帮助我们确认互联网联网工控资产与企业之间的对应关系。

2024-10-15T02:31:30.png

binaryedge

这个引擎也针对全网范围扫描,免费用户每个月可以搜索250次,如果需求比较大,多注册几个账号就可以了。查找利用log4j漏洞的ip:

2024-10-15T02:34:48.png

greynoise

GreyNoise分析互联网背后的噪音干扰。使用 GreyNoise 移除毫无意义的安全告警、查找受损设备或识别新出现的威胁。查找利用log4j漏洞的ip:
2024-10-15T02:39:54.png

netlas

2024-10-15T02:42:49.png

fullhunt

FullHunt是整个互联网的攻击面数据库。FullHunt 使公司能够发现他们的所有攻击面,监控它们的暴露情况,并持续扫描它们以查找最新的安全漏洞:
2024-10-15T02:44:16.png

原文地址 : https://cloud.tencent.com/developer/article/2017485

使用 `kill -31` 隐藏进程的原理与实践

2024-10-11T14:09:50.png

在 Unix/Linux 系统中,进程管理是系统操作的重要组成部分。通常,我们会使用 kill 命令来终止或控制进程。然而,使用 kill -31 命令可以实现一个特别的效果:隐藏进程。本文将探讨这一现象的原理,以及可能的应用场景。

什么是 kill -31

kill 命令用于发送信号到进程,信号是进程间通信的一种机制。-31 对应于 SIGUSR1 信号,这是一种用户定义的信号,通常用于特定的应用程序。具体来说,使用 kill -31 <进程ID> 可以发送 SIGUSR1 信号给指定的进程。

隐藏进程的原理

1. 信号处理

当进程接收到 SIGUSR1 信号时,它可以根据程序的设计采取不同的行动。某些程序可能会注册信号处理器来处理 SIGUSR1,并在接收到该信号时执行特定操作,如更新状态、改变行为或甚至隐藏自己。

2. 进程状态的改变

进程在接收到这个信号后,可以通过改变其状态或行为来实现“隐藏”效果。例如:

  • 更改进程名称:某些程序可能会在接收到信号后更改其名称,使其在 topps 命令中不易被识别。
  • 修改进程的优先级:进程可以降低自身的优先级,使其不那么显著。
  • 改变进程的运行模式:一些程序可能会在后台运行,减少对系统资源的占用。

3. 系统命令的限制

通常,topps 命令用于监控和管理系统进程。然而,某些进程可能会通过改变其行为或状态,使得这些工具无法有效地识别它们。这并不意味着进程已经终止,而是它们以一种不易被察觉的方式在运行。

实际应用场景

  1. 隐私保护:某些应用程序(如监控工具)可能希望在运行时不被用户察觉。
  2. 恶意软件:恶意软件可能会利用这一特性,以避免被安全软件或系统管理员发现。
  3. 调试与开发:开发者可能会在调试阶段使用这一特性,以测试程序在不同信号下的行为。

示例代码

下面是一个简单的示例,演示如何在 C 语言中处理 SIGUSR1 信号:

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>

void handle_sigusr1(int sig) {
    printf("Received SIGUSR1: Hiding process...\n");
    // 这里可以添加逻辑来隐藏进程
}

int main() {
    signal(SIGUSR1, handle_sigusr1); // 注册信号处理器

    while (1) {
        // 模拟进程持续运行
        printf("Process running... (PID: %d)\n", getpid());
        sleep(2);
    }

    return 0;
}

结论

使用 kill -31 隐藏进程的能力展示了 Unix/Linux 系统中信号处理的强大和灵活性。虽然这一特性可以在某些情况下带来便利,但也可能被恶意软件利用。因此,系统管理员应当保持警惕,监控系统中的异常活动,并采取相应的安全措施。

「连载二」Go 语言基础类型

2024-10-03T10:01:57.png

2024-10-03T10:05:37.png

Go 语言基础数据类型及复合类型学习

Go 语言是一种强类型语言,提供了多种基本数据类型和复合数据类型。这些数据类型构成了 Go 编程的基础,理解它们对于编写高效、可读的代码至关重要。本文将介绍 Go 语言的基本数据类型及复合类型,并提供示例代码。

1. 基础数据类型

1.1 布尔类型

布尔类型用于表示真(true)或假(false)的值。

示例

package main

import "fmt"

func main() {
    var isActive bool = true
    fmt.Println("Is Active:", isActive) // 输出: Is Active: true
}

1.2 整型

Go 语言提供了多种整型,包括:

  • int8:8 位带符号整型
  • byte:8 位无符号整型(uint8的别名)
  • int16:16 位带符号整型
  • int:平台相关的整型,通常为 32 位或 64 位
  • uint:无符号整型,通常为 32 位或 64 位
  • uintptr:无符号整型,用于存储指针

示例

package main

import "fmt"

func main() {
    var a int8 = 127
    var b byte = 255
    var c int16 = -32768
    var d int = 42
    var e uint = 50
    var f uintptr = 0x1234

    fmt.Println("a:", a) // 输出: a: 127
    fmt.Println("b:", b) // 输出: b: 255
    fmt.Println("c:", c) // 输出: c: -32768
    fmt.Println("d:", d) // 输出: d: 42
    fmt.Println("e:", e) // 输出: e: 50
    fmt.Println("f:", f) // 输出: f: 4660
}

1.3 浮点类型

浮点类型用于表示带小数的数值,Go 提供了两种浮点型:

  • float32:单精度浮点数
  • float64:双精度浮点数,默认使用此类型

示例

package main

import "fmt"

func main() {
    var pi float64 = 3.14159
    var e float32 = 2.71828

    fmt.Println("Pi:", pi) // 输出: Pi: 3.14159
    fmt.Println("E:", e)   // 输出: E: 2.71828
}

1.4 复数类型

复数类型由实部和虚部组成,Go 支持两种复数类型:

  • complex64(对应于 float32
  • complex128(对应于 float64

示例

package main

import "fmt"

func main() {
    var c1 complex64 = 1 + 2i
    var c2 complex128 = 3 + 4i

    fmt.Println("c1:", c1) // 输出: c1: (1+2i)
    fmt.Println("c2:", c2) // 输出: c2: (3+4i)
}

1.5 字符串类型

字符串是字符的序列,Go 的字符串是不可变的。可以使用双引号或反引号(用于多行字符串)来定义字符串。

示例

package main

import "fmt"

func main() {
    var greeting string = "Hello, Go!"
    var multiline string = `This is a
multiline string.`

    fmt.Println(greeting)      // 输出: Hello, Go!
    fmt.Println(multiline)     // 输出: This is a\nmultiline string.
}

1.6 字符类型

字符类型在 Go 中使用 rune 表示,runeint32 的别名,通常用于表示 Unicode 字符。

示例

package main

import "fmt"

func main() {
    var r rune = 'A'
    fmt.Println("Rune value:", r) // 输出: Rune value: 65 (Unicode for 'A')
}

1.7 错误类型

Go 的错误处理采用了内置的 error 类型,通常用于表示函数执行中的错误。

示例

package main

import (
    "errors"
    "fmt"
)

func doSomething() error {
    return errors.New("an error occurred")
}

func main() {
    if err := doSomething(); err != nil {
        fmt.Println("Error:", err) // 输出: Error: an error occurred
    }
}

2. 复合数据类型

Go 语言还支持多种复合类型,包括指针、数组、切片、字典、通道、结构体和接口。

2.1 指针

指针用于存储变量的地址,可以通过 & 获取变量的地址,通过 * 访问指针指向的值。

示例

package main

import "fmt"

func main() {
    x := 42
    ptr := &x // 获取 x 的地址

    fmt.Println("Value of x:", *ptr) // 输出: Value of x: 42
    *ptr = 100                           // 修改 x 的值
    fmt.Println("Updated value of x:", x) // 输出: Updated value of x: 100
}

2.2 数组

数组是固定大小的元素集合,声明时需要指定长度。

示例

package main

import "fmt"

func main() {
    var arr [3]int // 声明一个长度为 3 的整型数组
    arr[0] = 1
    arr[1] = 2
    arr[2] = 3

    fmt.Println("Array:", arr) // 输出: Array: [1 2 3]
}

2.3 切片

切片是对数组的一个抽象,提供了动态大小的数组功能。

示例

package main

import "fmt"

func main() {
    numbers := []int{1, 2, 3}
    fmt.Println("Slice:", numbers) // 输出: Slice: [1 2 3]

    // 添加元素
    numbers = append(numbers, 4)
    fmt.Println("Updated Slice:", numbers) // 输出: Updated Slice: [1 2 3 4]
}

2.4 字典

字典(map)是一种键值对集合,支持快速查找。

示例

package main

import "fmt"

func main() {
    dict := map[string]int{"one": 1, "two": 2, "three": 3}
    fmt.Println("Dictionary:", dict) // 输出: Dictionary: map[one:1 three:3 two:2]

    // 添加元素
    dict["four"] = 4
    fmt.Println("Updated Dictionary:", dict) // 输出: Updated Dictionary: map[four:4 one:1 three:3 two:2]
}

2.5 通道(Channel)

通道用于在 goroutine 之间进行通信。

示例

package main

import (
    "fmt"
    "time"
)

func main() {
    ch := make(chan string)

    go func() {
        time.Sleep(1 * time.Second)
        ch <- "Hello from goroutine!"
    }()

    fmt.Println(<-ch) // 输出: Hello from goroutine!
}

2.6 结构体

结构体用于将不同类型的数据组合在一起。

示例

package main

import "fmt"

type Person struct {
    Name string
    Age  int
}

func main() {
    p := Person{Name: "Alice", Age: 30}
    fmt.Println("Person:", p) // 输出: Person: {Alice 30}
}

2.7 接口

接口定义了一组方法的集合,可以通过接口实现多态。

示例

package main

import "fmt"

type Greeter interface {
    Greet() string
}

type English struct{}

func (e English) Greet() string {
    return "Hello!"
}

type Spanish struct{}

func (s Spanish) Greet() string {
    return "¡Hola!"
}

func main() {
    var g Greeter

    g = English{}
    fmt.Println(g.Greet()) // 输出: Hello!

    g = Spanish{}
    fmt.Println(g.Greet()) // 输出: ¡Hola!
}

3. 总结

在 Go 语言中,理解基础数据类型和复合类型是编写高效代码的基础。本文介绍了布尔类型、整型、浮点型、复数类型、字符串类型、字符类型、错误类型,以及指针、数组、切片、字典、通道、结构体和接口等复合类型。

">