This PowerShell script retrieves all the Autonomous System (AS) Numbers associated with an organization and then gets a deduplicated list of IPv4 and IPv6 subnets controlled by each AS number. Written in PWSH core, this script is cross compatable and works on both Linux and Windows machines provided they have PWSH core installed.
When the script is executed, it fetches AS Numbers associated with the specified organization (defaults to "microsoft"), retrieves the IP prefixes for each AS Number, deduplicates the IP prefixes, and writes the deduplicated IP prefixes to a file asn_ip_ranges.txt. It also generates analytics information, such as unique country codes, unique AS Numbers, unique names, unique descriptions, and unique prefix counts, and writes this information to the console and a file asn_analytics.txt.
Output Analytics....
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
UniqueCountryCodesCount: 4
UniqueASN: 3598,5761,6182,6584,8068,8069,8070,8071,8075,12076,12233,13399,14271,14719,20046,23468,
35106,45139,52985,395496,395524,395851,396463,398575,398656,400572
UniqueASNCount: 26
UniqueNames:
AZURE-MICROSOFT-PEERING,MICROSOFT,Microsoft do Brasil Imp. e Com. Software e Video G,
MICROSOFT-AS-AP,MICROSOFT-AZURE-DEDICATED,MICROSOFT-AZURE-DEDICATED,MICROSOFT-AZURE-ORBITAL,
MICROSOFT-BOS,MICROSOFT-CONNECTED-CACHE-POWERED-BY-NINJA-IX,MICROSOFT-CORP-AS,
MICROSOFT-CORP-AS-BLOCK-MSIT,MICROSOFT-CORP-AS-BLOCK-MSIT2,MICROSOFT-CORP-AS-BLOCK-MSIT3,
MICROSOFT-CORP-AS-BLOCK-MSIT4,MICROSOFT-CORP-BCENTRAL,MICROSOFT-CORP-MSN-AS-2,MICROSOFT-CORP-MSN-AS-4,
MICROSOFT-CORP-MSN-AS-BLOCK,MICROSOFT-CORP-MSN-AS-BLOCK,MICROSOFT-CORP-MSN-AS-BLOCK,
MICROSOFT-CORP-MSN-AS-BLOCK,MICROSOFT-CORP-MSN-AS-BLOCK,MICROSOFT-CORP-MSN-AS-SATURN,
MICROSOFT-CORP-XBOX-ONLINE,MICROSOFT-GP-AS,MICROSOFT-LIVE-MEETING
UniqueNamesCount: 21
UniqueDescriptions:
Microsoft Corp,Microsoft Corporation,Microsoft Corporation,Microsoft Corporation,
Microsoft Corporation,Microsoft Corporation,Microsoft Corporation,Microsoft Corporation,Microsoft Corporation,
Microsoft Corporation,Microsoft Corporation,Microsoft Corporation,Microsoft Corporation,Microsoft Corporation,
Microsoft Corporation,Microsoft Corporation,Microsoft Corporation,Microsoft Corporation,Microsoft Corporation,
Microsoft Corporation,Microsoft Corporation,Microsoft Corporation,Microsoft Corporation AS8075,
Microsoft do Brasil Imp. e Com. Software e Video G,Ninja-IX Corporation,Proconex Inc.
UniqueDescriptionsCount: 6
UniquePrefixCount: 1003
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
An Autonomous System is a collection of connected Internet Protocol (IP) routing prefixes under the control of one or more network operators that presents a common, clearly defined routing policy to the internet.
-
Each AS is assigned a unique ASN (Autonomous System Number), which is used to identify the AS and its associated routing policies.
-
AS (Autonomous System) prefixes, also known as BGP (Border Gateway Protocol) prefixes, are blocks of IP addresses that are assigned to an Autonomous System.
This script can be called directly using its built in defaults or its functions used in another script.
powershell.exe .\ASN2IP.ps1 -ORGANIZATION_NAME "microsoft"
. .\ASN2IP.ps1
$ASNumbers = Get-ASNInfo -ORGANIZATION_NAME $OrganizationName
$ASNPrefixes = $ASNumbers | Sort-Object | ForEach-Object { Get-ASNPrefixes -ASN $_ }
$ASNPrefixes | Sort-Object -Unique | Set-Content "asn_ip_ranges.txt"
Returns a list of strings representing all AS Numbers owned by an organization. It queries the BGPView API to get the AS Numbers associated with the specified organization name. Takes a mandatory param of {ORGANIZATION_NAME} representing the organization name in a ARIN WHOIS record. If no {ORGANIZATION_NAME} param is provided, the organization name defaults to "microsoft".
Get-ASNInfo -ORGANIZATION_NAME
The BGPView API performs a contains search and as such may return some urealted results. Ensure the output is correct by reviewing the 'UniqueNames' and 'UniqueDescriptions' in the analytics output.
Returns a list of strings representing all IP prefixes of a provided AS number. It queries the RIPE NCC API to get the announced prefixes for the given AS number. Takes an mandatory param of {asn} representing an Autonomous System (AS) number.
Get-ASNPrefixes -ASN
Writes analytics to the console and as a text file named asn_analytics.txt.
Takes an mandatory param of {asn_prefixes} representing IP prefixes of one or many Autonomous System (AS) numbers.
This function also references a global variable called $env:ASN_ANALYTICS
and as such cannot be called externally without also having first run the Get-ASNInfo
function which will set the global variable.
Write-ASNAnalytics
The main function that runs with default values or a provided organization name. It calls the other functions to retrieve AS Numbers, get the associated IP prefixes, and write the analytics information to the console and text files.
Run -organizationName $ORGANIZATION_NAME